2

私のアプリケーション データは、ユーザーがシステムを操作するにつれて成長する巨大なツリーで構成されています。グラフ データベースは、key-val ストアよりも大きなツリーの格納に適していますか? スケーラビリティの損失 (通常、グラフ データベースはシャードするのが難しいため) は、他の機能によって補われますか?

4

2 に答える 2

4

場合によります。

キーと値のストアを使用する場合、子に対して多くのルックアップを行うと思います。これは長いリストになる可能性があるため、キーが親ノードになり、値が子になり、最終的にはテーブルの多くの移動とクエリを使用します。これは通常、リレーショナル データベース (これらのタイプのテーブル結合) で発生する問題です。

グラフ データベースは、結合ではなくトラバーサルを行うので優れているため、ルートから開始し、深さまたは終了条件を指定すると、グラフ トラバーサルで発信リレーションシップを使用して最終結果を得ることができます。

シャーディングは、少なくともストア間のリレーションシップ トラバーサルという意味では、グラフ データベースに適したオプションではないことに同意します。しかし、データを適切にモデリングすれば、少なくともグラフ データベースがスマートであれば、これは問題にはならないと思います。

Neo4j には密集したノードに関する問題があり、多数 (500k+) のリレーションシップを持つノードがトラバーサルの速度を低下させる可能性がありますが、インデックスを使用してこの問題を回避できます。これとは別に、ディスク上のストレージが効率的であり、トラバーサルが非常に高速であるため、大規模なデータに最適です。

于 2013-07-17T10:41:33.713 に答える