これにアプローチする際に、これら 2 つのテクノロジを比較しようとしていましたが、これらのいずれかまたは両方を扱った経験のある方はいらっしゃいますか? 同様のユースケースを扱う場合、私は主にパフォーマンスの数値に関心があります。
3 に答える
マルコが言ったことすべてに同意すると、グラフ データベースでは、世界のローカル インデックスをグローバル インデックスに置き換えることができる (そしてそうすべきである) と主張することができます。私の意見では、グラフ データ モデルの最大の利点は、データ モデルをグラフ トポロジにエンコードできることであり、柔軟性、進化の容易さ、およびパフォーマンスの点で質的な利点が得られます。これを念頭に置いて、Neo4j のラベルは実際にはこれらすべてを損なうと私は主張します。隣接するエッジがそのラベルを持つソースを指しているノードにラベルを具体化することは、「スキーマはグラフである」という哲学にはるかに沿っています。
もちろん、エンジンにローカル インデックスがない場合は、スーパーノードの問題に戻ります。しかし、それらを持っている場合 (グラフ データベースと呼ばれるものの要件となるはずです)、ラベルをノードに簡単に変換し、必要L
な頂点に対してそのノードを指す関係を作成できます。でラベル付けされたL
v -[L]-> L
v
ラベルを持っていることを意味しますL
。これを Titan で Neo4j ラベルのように動作させたい場合は、-[L]->
リレーションを「manyToOne」にして ( Titan カーディナリティ制約を参照)、頂点中心のインデックスを作成します。このパターンを使用すると、ラベルなどでできることすべてを取得できます。あなたはできる
- これを、そのラベルに関連するプロパティの名前空間として効果的に使用します
- 1 つのラベル内で要素を並べ替える
- パフォーマンスを落とさずにラベルを簡単にネスト (複合キーを使用するだけ)
- ラベルの宣言と、それで
L
ラベル付けされた要素へのアクセス方法を分離する