2

各ノードに関する重要なメタ データ セット (ノードごとに数千のプロパティ) を持つ大規模なグラフ データベースを構築しています。私は現在、どのメタ データを Neo4j 内のノードにする必要があるか、ノードのプロパティにする必要があるか、別のデータベースに格納する必要があるかを決定するプロセスを進めています。

私の考えでは、メタ データを 3 つの方法で使用します
。1 - プロパティが多くのノード間で共有されている場合、そのプロパティを独自のノードにして、そのプロパティにエッジを作成します。

2 - プロパティがグラフをトラバースするために重要であるが、「高度に」共有されていない場合は、それをノード プロパティとして追加します。(必要に応じて、Neo4j 内でインデックスを作成することもできます)

3 = メタ データがそのノードを厳密に記述している場合、それを別の NoSQL データベースに格納し、Neo4J ノード ID を他のデータベースへの外部キーにします。

グラフ データベースを使用するのが最も効率的であるように思えますが、さまざまなプロパティ タイプがあり、それを使用する前にどのタイプのプロパティであるかを判断しなければならないのは面倒です。(おそらくプロパティ ルックアップのキーと値のストア) また、プロパティが高度に共有されたり、効率的なトラバーサルが必要になったりした場合に、プロパティを 3 から 2 に昇格する簡単な方法が必要になることも意味します。

誰かがこのアプローチをとったことがありますか?共有すべき考えや避けるべきことはありますか?

4

1 に答える 1

6

Do never ever store a Neo4j node id in an external system. The node id is basically a offset in the respective store file. If you delete a node its id might be reused when new nodes are created.

The right approach is to have a "good" identifier (e.g. uuid) as a node property and put that into Neo4j's index. That uuid is then save to be stored in third party systems.

Some time ago I've created a unmanaged extension that adds a uuid to each new node and prevent manual changes to these uuids: https://github.com/sarmbruster/neo4j-uuid.

Update (2013-08-21)

I've blogged about UUIDs with Neo4j.

于 2013-03-20T15:45:22.380 に答える