Neo4j
Neo4j は、2007 年から一般公開されている、アプリケーションに ACID 準拠のトランザクション バックエンドを提供するオープンソースの NoSQL ネイティブ グラフ データベースです。この記事では、Neo4j のグラフ ストア モデルのみに焦点を当てます。
プロパティグラフ
プロパティ グラフでは、情報はノード、関係、プロパティとして編成されます。[2]
ノードはグラフ内のエンティティです。
- ノードには、ドメイン内でのさまざまな役割を表すラベルを付けることができます。(例:
Person
)。 - ノードは、任意の数のキーと値のペア、またはプロパティを保持できます。(例:
name
) - ノード ラベルは、特定のノードにメタデータ (インデックスや制約情報など) を添付することもあります。
関係は、2 つのノード エンティティ (例: 人、人) 間の有向の、名前付きの接続を提供しますLOVES
。
- リレーションシップには常に方向、タイプ、開始ノード、および終了ノードがあり、ノードと同様にプロパティを持つことができます。
- ノードは、パフォーマンスを犠牲にすることなく、任意の数またはタイプの関係を持つことができます。
- 関係には常に方向性がありますが、どの方向にも効率的にナビゲートできます。
グラフストアモデル
次の図[3]は、Neo4j のプロパティ グラフの簡単な例を詳しく示しています。ここでは 3 つの頂点v 1 v_{1}v1、v 2 v_{2}v2、v 3 v_{3}v3異なるエッジe 1 e_{1}を介して接続されていますe1、e 2 e_{2}e2、。。。e 5 e_{5}e5。エッジにはl 1 l_{1}というラベルが付いています私1、l 2 l_{2}私2これは、接続された頂点間のさまざまな関係を表します。
このモデルでは、各頂点レコードには、最初のエッジへのポインターと、頂点プロパティへのポインターなどの追加のメタデータが含まれています。各エッジ レコードには、接続された頂点間の関係を表すラベル、エッジによって接続された頂点ペアへのポインタ、および各頂点の前および次のエッジへのポインタが含まれます。図 1 のグラフの頂点とエッジのレコードを表 1 に示します。