3

Web アプリケーションに MongoDB を使用することを検討していますが、推奨されない状況がいくつかあることを読みました。私のプロジェクトがそのような状況の 1 つになるのだろうかと思っています。

これが私のシステム内のエンティティの簡単な概要です -

  • 標準のユーザー詳細属性を持つユーザーがいます
  • 各ユーザーは複数の領収書を持つことができ、領収書は 1 人のユーザーしか持つことができません
  • 領収書には多くの製品が含まれています
  • 製品には標準の製品詳細属性があります
  • ユーザーは多くの友達を持つことができ、各友達はユーザー自身です
  • レビューは、ユーザーが製品に対して行うことができます
  • ユーザーがポイントとバッジを獲得する、stackoverflow のような評判システムがあります。

ご覧のとおり、互いにさまざまな関係を持つエンティティがたくさんあります。そして、データの完全性は重要です。このタイプのスキーマは MongoDB に適していますか?

4

1 に答える 1

5

あなたのデータは、ドキュメント指向ではなく、非常にリレーショナルであるようです。

また、重要な要件としてデータの整合性を指摘しています (異なるエンティティ間の参照整合性を意味すると思います)。エンティティが同じドキュメントに格納されていない場合、MongoDB でエンティティ間の整合性を保証することは困難です。また、MongoDB は制約を適用できません (フィールド値の一意性を除く)。

また、全体的に非常にリレーショナルなマインド パターンを持っているようで、本来の使用方法で MongoDB を使用するのが難しくなります。

これらの理由から、リレーショナル データベースに固執することをお勧めします。

そもそもMongoDBを検討した理由は、高速でスケーラブルと聞いたからでしょう。はい、それは高速であり、適切にスケーリングされますが、それは参照整合性を強制せず、テーブル結合を行わないためです. これらの機能が必要で、それらをシミュレートするための醜い回避策を見つけなければならない場合、MongoDB はもはやそれほど高速ではありません。

于 2013-04-02T13:32:29.920 に答える