【ぐらふでーたべーす】

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

公開:
💡 データの人間関係を丸ごと記憶するつながりの達人
📌 このページのポイント
グラフデータベースの構造 友達 友達 フォロー いいね いいね 購入 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は棒グラフや折れ線グラフではなく、数学のグラフ理論(ノードとエッジのネットワーク)のことだよ
← 用語集にもどる