【ディーグラフ】

Dgraph とは?

最終更新:
💡 データのつながりを扱う、GraphQL対応の分散データベース

データ同士の関係をグラフとして扱う分散データベース。GraphQLのスキーマからAPIを公開でき、Dgraph固有のDQLでも問い合わせられる。関係ごとのデータ分割と複製を使う設計で、規模や障害への対応は構成に依存する。

📌 このページのポイント
名前の付いた関係をたどる Alice Bob Carol フォロー フォロー 本 購入 購入 GraphQL API / DQLで扱う 性能・可用性は構成と使い方による
人と本をノード、フォローと購入を向きのある関係として表した例。分散するサーバーの配置や性能比較を表す図ではない。
ひよこ ひよこ
Dgraphは何を表すデータベースなの?
ペンギン先生 ペンギン先生
人や商品などの物事と、その間の名前の付いた関係を扱うよ。例えば「AliceがBobをフォローする」「Aliceが本を買う」。グラフのノードと向きのあるエッジとして、つながりを表せるんだ。
ひよこ ひよこ
SNSやおすすめ機能に使える?
ペンギン先生 ペンギン先生
フォロー関係や購入関係をたどるデータモデルを作れるよ。こうした関係を直接表現することが特徴だね。RDBでも関係は扱えるし、どちらが速いかはデータや問い合わせ、構成を確認する必要があるんだ。
ひよこ ひよこ
GraphQLで操作できるの?
ペンギン先生 ペンギン先生
GraphQLスキーマを登録すると、DgraphがGraphQL APIを公開するよ。アプリから必要なデータを問い合わせたり更新したりできる。GraphQL対応から、REST APIも自動で作られると考えるのは誤りだよ。
ひよこ ひよこ
DQLもGraphQLと同じなの?
ペンギン先生 ペンギン先生
DQLはDgraph固有の言語で、構文や機能に違いがあるよ。DgraphのGraphQL層では、問い合わせを内部でDQLに変換して処理する。GraphQLのスキーマから対応するDQLのスキーマも作られるんだ。
ひよこ ひよこ
分散なら、1台が落ちても必ず大丈夫?
ペンギン先生 ペンギン先生
構成を確認しよう。Dgraphは関係ごとにデータを分割し、複製による高可用性も設計できる。公式資料の高可用性グループは通常3台以上で、1台の障害時に残る台が処理を担う。読み取り用のLearnerは、そのまま障害時の引き継ぎ役になるわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Dgraph」って出てきたら「データのつながりを扱う、GraphQL対応の分散データベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「Dgraph」 = 分散グラフデータベースの製品名
💬 グラフを分散して扱うデータベースの製品名だよ。グラフは物事同士のつながりを表す構造なんだ。

参考資料

← 用語集にもどる