【ぷろぱてぃぐらふ】

プロパティグラフ とは?

公開:
💡 点と線にデータを貼り付けて、つながりをそのまま表現するモデル
📌 このページのポイント
プロパティグラフモデル 田中 :人物 年齢: 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(グラフ=点と辺の集まり)という意味だよ。数学のグラフ理論をデータベース向けに拡張したモデルなんだ
← 用語集にもどる