2

私は、多くのデータベース モデルのどれが確率的レコード比較を最もよくサポートするかを判断しようとしています。具体的には、さまざまな属性 (名前、タイプ、作成者、所有者など) によって定義された約 2,000 万のドキュメントがあります。テキスト属性がデータ セットの大部分を占めていますが、まだ多くの画像があります。読み取り操作は、パフォーマンスに関して最も重要ですが、毎週約 20,000 の新しいドキュメントが挿入されると予想しています。幸いなことに、挿入速度はまったく問題ではありません。制御された処理のために受信ドキュメントをキューに入れることに問題はありません。

データベース クエリは、通常、次の形式を取ります。

  • Find documents containing at least five sentences that reference someone who'a a member of the military
  • Predict whether User A will comment on a specific document written by User B, given User A's entire comment history
  • Predict an author for Document X by comparing vocabulary, word ordering, sentence structure, and concept flow

最初に考えたのは、 MongoDBのような単純なドキュメント ストアを使用することでした。各ドキュメントには必ずしも同じデータが含まれているとは限らないためです。ただし、複雑なクエリは、これを事実上ファイル システム ラッパーに分解します。これは、希望する結果を生成するクエリを構築できないためです。そのため、このアプローチでは、データベース全体を調べて各ファイルを個別に処理する必要があります。ドキュメント ストアは水平方向に適切に拡張できますが、ここでは利点が実現されていません。

これにより、私の粒度ドキュメント レベルではなく、エンティティ関係レベルであることに気付きました。グラフ データベースは、文中の各単語を次の単語、次の段落、現在の段落、品詞などに関連付けるのを容易にするため、論理的な選択のように思われました。グラフ データベースは、データの複製を制限し、統計的クラスタリングの速度を上げ、とりわけ、水平方向にスケーリングします。残念ながら、クエリに対する決定的な回答を保証するには、グラフ全体をトラバースする必要があります。それでも、インデックス作成はパフォーマンスに役立ちます。

また、リレーショナル データベースの使用についても評価しました。リレーショナル データベースは、適切に設計されている場合 (つまり、不必要な正規化を回避することによって) 非常に効率的です。リレーショナル データベースは、ユーザー A が作成したすべてのドキュメントを見つけることには優れていますが、構造比較 (コストのかかる結合を含む) には失敗しています。リレーショナル データベースでは、制約 (主キー、外部キー、一意性など) も効率的に適用されます。これは、一部の NoSQL ソリューションが苦労するタスクです。

上記の要件を考慮した後、リレーショナル モデルの「正確さ」(つまり、ドメインの効率的な枯渇) とグラフ データベースの柔軟性を組み合わせたデータベース モデルはありますか?

4

1 に答える 1