私の意見では、ストレージバックエンドを選択する際には、データの形式が主な関心事になるはずです。本質的にリレーショナルなデータがありますか?もしそうなら、それは可能であり、ドキュメント内のデータをモデル化することは良い考えですか?データモデリングは、リレーショナルデータベースと同様にドキュメントデータベースでも重要ですが、それは異なる方法で行われます。何種類のオブジェクトがあり、それらはどのように関連していますか? MongodbのDBrefはそのトリックを実行できますか、それとも外部キーを見逃してしまうので苦痛になりますか?データへのアクセスパターンは何ですか?フィールド値でフィルタリングされた1つのタイプのデータをフェッチするだけですか、それとも複雑なフェッチモードがありますか?
ACIDトランザクションの整合性が必要ですか?ドメインはデータに多くの制約を課していますか?ドキュメントデータベースのスケーラビリティ係数が必要ですか、それとも単に「クール」なものですか?
一貫性とデータ整合性の要件は何ですか?一部のNoSQLソリューションと特にMongoDBは、パフォーマンスを得るために書き込みの一貫性がかなり緩いです。 NoSQLは、統一されたランドスケープやその他の製品ではありません。 CouchDBには、この部門に他の特徴があります。一部は調整可能です。
これらはすべて、ストレージの選択に入る必要がある質問です。
いくつかの経験
- MongoDBまたは任意のドキュメントデータベースを使用している場合、保存されているデータについて詳細なレポートを作成するのは難しい場合があり、その目的でRDBMSとdocument-dbを組み合わせているユースケースもあります。
- (非常に)異なるクエリモデル。 MongoDBは、他のドキュメントDBとも異なります。
- 開発中にデータ形式/スキーマを柔軟に変更できます
- 不明な地域
- ドライバーとフレームワークの成熟度はさまざまです
- 高速
- (多くのRDBMS製品と比較して)よりシンプルな(多くの点で)製品および管理ツール
- インピーダンスの不一致はもうありません。ストレージはデータに適合しますが、その逆ではありません。
- 摩擦が少なく、データに直接アクセスできます。
- ドメインは永続性により密接に関連しています(NoRMのORM「レベル」、バックエンドをどれだけ抽象化するかによって異なります。私はNoRMを使用していないため、それに答えることができません。)