【ぷろぱてぃぐらふ】

プロパティグラフ とは?

最終更新:
💡 ノードと関係の両方に、意味と属性を持たせる

ノードと関係にキー・値の属性を持たせ、つながりとデータを表すモデル。例えばNeo4jでは、ノードのラベル、関係の型と方向、両者のプロパティを使います。具体的な制約や操作言語は製品によって異なります。

📌 このページのポイント
プロパティグラフ:点と関係に属性ノード:Personname: Alice人物の属性ノード:Booktitle: IT入門書籍の属性PURCHASEDqty: 2関係の属性AliceがIT入門を2冊購入した例Person / Book:ノードのラベルPURCHASED:関係の型方向は関係の意味で、通信や時間ではない
Neo4jに沿った架空の例で、ノードだけでなく関係にも属性を持たせます。ラベル・型・属性の制約と操作言語は製品ごとに確認し、性能も条件によります。
ひよこ ひよこ
プロパティグラフって何を表すの?
ペンギン先生 ペンギン先生
点にあたるノードと、それらを結ぶ関係に属性を持たせるよ。例えば人のnameと、購入という関係の数量。図ではAliceがBookを2冊購入したという架空の例で、両方にデータを付けられることを示すんだ。
ひよこ ひよこ
ラベルや関係の型は同じもの?
ペンギン先生 ペンギン先生
Neo4jの例では区別するよ。ノードはPersonなどのラベルを0個以上持てる。関係はPURCHASEDなど1つの型と方向を持つ。nameやqtyなどのキー・値はプロパティだね。ほかの製品まで同じ制約と決めつけないようにしよう。
ひよこ ひよこ
矢印は何の向きなの?
ペンギン先生 ペンギン先生
図では人から購入した本への関係を表す。時間やデータ送信の向きではないよ。Neo4jは関係に方向を保存するけど、必要ならクエリで方向を問わずに探せる。友人関係などを両向きに重複して保存する必要があるかも、意味に合わせて考えるんだ。
ひよこ ひよこ
テーブルより必ず速くなる?
ペンギン先生 ペンギン先生
必ずではないよ。関係をたどる形で表現できる一方、探索で広がる候補が多いと処理量も増える。データ量、索引、クエリや実装によるので、必要な処理で計測しよう。グラフというだけで何段先でも速いとは限らないんだ。
ひよこ ひよこ
RDFとはどう違うの?
ペンギン先生 ペンギン先生
RDFは主語・述語・目的語のトリプルで文を表す標準的なモデル。ここで扱うモデルは、ノードや関係自体にプロパティを付ける。どちらもつながりを扱えるけど、表し方や使う言語・制約が異なるよ。柔軟さや性能の優劣を名前だけで決めないようにしよう。
もっと詳しく知りたい人へ

すべてのグラフDBでCypherを使う?

操作言語や対応機能は製品によって異なります。Neo4jではCypherを使いますが、プロパティグラフというデータモデル名だけで同じ言語や構文が使えるとは判断できません。対象製品の仕様を確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「プロパティグラフ」って出てきたら「ノードと関係に属性を付けて、つながりを表すデータモデル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Property Graph」 = プロパティ付きグラフ
💬 Property(属性・特性)を持つGraph(グラフ=点と辺の集まり)という意味だよ。数学のグラフ理論をデータベース向けに拡張したモデルなんだ

参考資料

← 用語集にもどる