【ぐらふでーたべーす】

グラフデータベース とは?

💡 データの人間関係を丸ごと記憶するつながりの達人
📌 このページのポイント
グラフデータベースの構造 友達 友達 フォロー いいね いいね 購入 Alice age:28 Bob age:32 Carol age:25 映画A SF 技術書B Python 構成要素 ノード(人) ノード(物) エッジ(関係) プロパティ付き
グラフデータベースのノードとエッジの関係
ひよこ ひよこ

グラフデータベースの「グラフ」って円グラフとかのグラフ?

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

違うんだ。数学の「グラフ理論」のグラフで、点と線のネットワークのことだよ。例えばSNSで「AさんはBさんの友達」「BさんはCさんをフォロー」という関係を、点(ノード)と線(エッジ)で表現するイメージだね

ひよこ ひよこ

普通のデータベースでも関係は表せるよね?

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

リレーショナルDBでもJOINで関係をたどれるけど、「友達の友達の友達」みたいに何段階もたどると急激に遅くなるんだ。グラフDBはそういう深いたどりが得意で、何段階でもサクサク検索できるよ

ひよこ ひよこ

どんな場面で使われるの?

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

SNSの友達推薦、ECサイトの「この商品を買った人はこれも買っています」、不正送金の検知、交通経路の探索など、つながりが重要な場面で大活躍だよ。GoogleのKnowledge Graphも名前のとおりグラフ構造なんだ

ひよこ ひよこ

Neo4jってよく聞くけど、SQLみたいに書けるの?

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

Neo4jではCypherという専用言語を使うよ。例えば MATCH (a)-[:FRIEND]->(b) RETURN b と書くと、aの友達を全部取得できる。矢印で関係を表現するから、SQLJOINより直感的なんだ。最近はAmazon Neptuneなどクラウド型のグラフDBも増えてきているね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「グラフデータベース」って出てきたら「データ同士のつながりを保存・検索するのが得意なデータベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Graph Database」 = グラフデータベース
💬 ここでのGraphは棒グラフや折れ線グラフではなく、数学のグラフ理論(ノードとエッジのネットワーク)のことだよ
← 用語集にもどる