【ディーグラフ】

Dgraph とは?

公開:
💡 つながりを探すのが得意な、グラフ専門の分散データベース
📌 このページのポイント
Dgraph — グラフデータベースの構造 Alice User Bob User Carol User Python本 Product フォロー フォロー 購入 購入 ノード(点)とエッジ(線)で関係性をそのまま表現。GraphQLで簡単にクエリできる
Dgraphがノードとエッジで関係性を表現するグラフ構造のイメージ
ひよこ ひよこ
ペンギン先生、グラフデータベースって普通のデータベースと何が違うの?
ペンギン先生 ペンギン先生
普通のRDBはテーブルの行と列でデータを管理するけど、グラフデータベースは「ノード(点)」と「エッジ(線)」で関係性を表すんだよ。「AさんはBさんをフォローしている」みたいなつながりをそのまま保存できるんだ。
ひよこ ひよこ
それってSNSみたいなサービスに使うの?
ペンギン先生 ペンギン先生
そうだよ。SNSのフォロー関係・友達の友達の検索・レコメンドエンジンなんかがグラフDBの得意分野なんだ。RDBで同じことをやると複雑なJOINが必要になって遅くなるんだよ。
ひよこ ひよこ
DgraphはGraphQLで操作できるって本当なの?
ペンギン先生 ペンギン先生
本当だよ。スキーマGraphQLで定義すると、Dgraphが自動でクエリ・ミューテーションのAPIを生成してくれるんだ。フロントエンドGraphQLクライアントからそのまま使えるから便利なんだよ。
ひよこ ひよこ
分散っていうのはどういう意味なの?
ペンギン先生 ペンギン先生
データを複数のサーバーに分割して並列処理できるということだよ。グラフが巨大になっても水平スケールで対応できるし、1台が落ちても自動でリカバリーするんだ。
ひよこ ひよこ
他のグラフデータベースと比べてどんな特徴があるの?
ペンギン先生 ペンギン先生
Neo4jと比べると、Dgraphは最初から分散設計になっているのが大きな違いだよ。GraphQLをファーストクラスでサポートしているのも珍しい特徴で、Webアプリと直結しやすいんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Dgraph」って出てきたら「GraphQL対応の分散グラフデータベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dgraph」 = Distributed Graph(分散グラフ)の略
💬 Distributed(分散)とGraph(グラフ)を組み合わせた名前で、グラフを分散処理するという設計思想をそのまま名前にしているんだよ
← 用語集にもどる