4

クエリが特定のテーブルと特定の列内の特定のデータを検索しようとしているときに、MySqlのようなリレーショナルデータベースがNeo4jのようなグラフデータベースよりも優れたパフォーマンスを発揮するのは本当ですか。

たとえば、クエリが「パリで発生したすべてのイベントを検索する」の場合。

簡単にするために、MySqlには、Eventこの種のクエリを最適化するために「City」にインデックスが付いたテーブルがあると仮定します。

Neo4jはどうですか?グラフデータベースは、関連するイベントを取得するためにすべてのグラフをトラバースする必要があると考えるかもしれません...ただし、ドキュメントの正確さとして、Neo4jを使用していくつかのインデックスを作成することは可能です。

なぜRDMBSは、この種の分析/統計要求に対してそれよりも高速であるのですか?

4

1 に答える 1

6

すでに述べたように、この目的のためにインデックスを作成します。Neo4jのデフォルトのインデックスプロバイダーはluceneですこれは非常に高速で、きめ細かいインデックス作成とクエリの可能性を可能にします。

インデックスはノードまたはリレーションシップに使用でき、(通常)ノードまたはリレーションシップの特定のプロパティに設定されている値を追跡します。

すべてのノードや特定のプロパティとの関係に自動的にインデックスを付けるneo4jの自動インデックス機能を使用していない限り、通常はアプリケーションコードでインデックスを作成する必要があります。

したがって、「パリで発生したすべてのイベントを検索する」などのクエリはまったく問題なく、インデックスを使用すると非常にパフォーマンスが高くなります。

于 2013-01-15T14:37:24.957 に答える