【ぷろぱてぃぐらふ】

プロパティグラフ とは?

💡 点と線にデータを貼り付けて、つながりをそのまま表現するモデル
📌 このページのポイント
プロパティグラフモデル 田中 :人物 年齢: 30 鈴木 :人物 年齢: 25 Python入門 :書籍 価格: 2800 IT企業A :会社 友達 購入 勤務 ノード(プロパティ付き) エッジ(関係)
ノードとエッジにプロパティ(属性)を持たせて関係を表現する
ひよこ ひよこ

プロパティグラフって普通のグラフと何が違うの?

ペンギン先生 ペンギン先生

数学のグラフは「点と線」だけだけど、プロパティグラフはそこにデータを貼り付けられるんだ。たとえば「田中さん」ノードに年齢や職業のプロパティを持たせて、「友達」エッジに「いつから」というプロパティを持たせる、みたいなことができるよ

ひよこ ひよこ

テーブルで管理するのとどう違うの?

ペンギン先生 ペンギン先生

RDBだと「友達の友達の友達」を調べるのに何回もJOINが必要で遅くなるんだ。でもグラフDBなら関係をたどるだけだから、何段先でもサクサク探索できる。SNSで「知り合いかも?」を出すような処理にぴったりだよ

ひよこ ひよこ

おもしろい!Neo4jが有名みたいだけど、どうやってデータを取り出すの?

ペンギン先生 ペンギン先生

Neo4jではCypherっていう専用クエリ言語を使うよ。SQLに似てるけど、矢印で関係を表現できるのが特徴だね。たとえば MATCH (a)-[:FRIEND]->(b) って書けば「aとbが友達」というパターンを検索できるんだ

ひよこ ひよこ

RDBをやめて全部グラフにしたほうがいい?

ペンギン先生 ペンギン先生

いやいや、向き不向きがあるよ。集計や帳票処理はRDBが得意だし、グラフDBは「関係のネットワークを深く探索する」場面で本領を発揮する。不正送金の検知や知識グラフ、サプライチェーンの追跡なんかが代表的なユースケースだね

ひよこ ひよこ

トリプルストアとはどう違うの?

ペンギン先生 ペンギン先生

トリプルストアは主語・述語・目的語の3つ組でデータを表すRDFベースのモデルで、プロパティグラフはノードとエッジに自由にプロパティを持たせるモデルだよ。プロパティグラフのほうが柔軟で開発者フレンドリー、トリプルストアは標準規格(SPARQL)で相互運用性が高い、という棲み分けだね

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