Neo4j は内部的にどのようにデータを保存するのでしょうか? 質問する

Neo4j は内部的にどのようにデータを保存するのでしょうか? 質問する

私の質問は開発者の観点からのものであり(特にユーザーに関するものではありません)、少し複雑かもしれません。ノードと関係の構造がデータベースに論理的にどのように保存されるかを知りたいのです。たとえば、私が「bla bla 情報があります。どこに?」と言うとき、答えは、BOOK で、グリッド形式またはページ上の行のいずれかです。RDBMS の場合、データはグリッド/表形式で保存されます。しかし、グラフが Neo4j/グラフ データベースにどのように保存されるのか理解できません。私は neo4j クライアント 2.1.2 を使用しています。

ベストアンサー1

http://www.slideshare.net/thobe/an-overview-of-neo4j-internals非常に古いものですが、Neo4j の論理表現の概要を知ることができます。

ノードは以下を参照します:

  • 最初のラベル(ラベルは単一リンクリストとして保存されると思われます)
  • 最初のプロパティ(プロパティは単一リンクリストとして編成されます)
  • 開始/終了関係

リレーションシップは二重にリンクされたリストとして構成されます。リレーションシップは次のものを指します。

  • 最初のプロパティ(ノードと同じ)
  • 開始ノードの先行ノードと後続ノードの関係
  • 終了ノードの先行ノードと後続ノードの関係

この連鎖構造のおかげで、トラバーサルの概念 (つまり、データをクエリする方法) が簡単に生まれます。これが、Neo4j のようなグラフ データベースがグラフ構造のデータのトラバースに優れている理由です。

私の推測では、Neo4jバージョン2.1(および新たに導入された高密度ノード管理) では、ノードの関係はタイプごとに分離されます。これにより、たとえばノード N がタイプ A の 5 つの関係とタイプ B の 500 万の関係の開始ノードである場合、N のタイプ A の関係を走査しても O(n=5) のままです。

おすすめ記事