DRIブログ

グラフデータベースがいま世界で注目を集めているたった一つの理由

2019/11/28 12:00:00 / by 仲程 隆顕

はじめに

NoSQLの1つに分類されるグラフデータベース(以下、グラフDB)ですが、同じNoSQLに分類されるドキュメント型、キーバリュー型、ワイドカラム型などのデータベースに比べ国内の導入事例が少ないように思います。

一方、海外ではグラフDBの人気が年々高まっています。「DB Engine」というWebサイト上に掲載されている下記の図を見ると、過去7年間で最も人気が高まっているDBはダントツでグラフDBであることがわかります。

DB_Trend

図:データベース種類別人気の推移
DB種類ごとのトップ3の平均スコアを求め、その増加率を算出している
(参照:https://db-engines.com/en/ranking_categories

実際に海外では社内システムの一部をリレーショナルDBからグラフDBへ切り替えるケースや、リレーショナルDBでは実現が難しかった機能をグラフDBによって実現するケースが増えています。また、そのような事例がWeb上に多く公開されています。

このようにグラフDBの人気が高まっているのはなぜでしょうか?

 

グラフデータベースがいま世界で注目を集めている理由

グラフDBの「グラフ」とは、円グラフや棒グラフなどの情報を二次元的に表現した「図」ではなく、グラフ理論の「グラフ」であり、「ネットワーク」という言葉のイメージに近いものです。
グラフデータベースは、ノード(頂点)とエッジ(辺)とプロパティ(属性)の3つの要素から構成され、ノード間の関係を管理することに特化したデータベースです。

GraphDB_3components

図:グラフデータベースの3つの構成要素

リレーショナルDBでは時間がかかり過ぎてしまうJOINが多発する複雑なクエリも、グラフDBなら高速に実行することが出来ます。これこそがまさにグラフDBへの関心が世界的に高まっている理由なのです。

 

グラフデータベースの検索速度

では、グラフDBはどれほどの速さでクエリを実行できるのでしょうか?
Partner氏とVukotic氏は二人の著書「Neo4j in Action」にて、リレーショナルDBとグラフDBの検索クエリの実行スピードの比較を行っています。実験はソーシャルネットワーク内の「友達の友達・・・」を検索するというもので、各人が50人の友達を持つ100万人規模のソーシャルネットワークを想定しています。

比較結果は以下の通りです。
(下の表の「深さ」は検索の段階を表します。たとえば、深さ"2"は「友達の友達」で、深さ"3"は「友達の友達の友達」を表します。)

GraphDB_SearchSpeed

表:リレーショナルDBとグラフDBの検索スピード比較
(出典: Neo4j in Action)

深さ"2"の検索では大差はありませんが、深さ"3"以降は、一気にリレーショナルDBの実行スピードが落ちます。リレーショナルDBをJOINが多発するような複雑なクエリで利用するのは現実的ではないでしょう。グラフDBも深さに応じてスピードは落ちますが、リレーショナルDBと比較すると圧倒的に速く、深さ"4"でもオンラインシステムでの利用が検討できるレベルです。

このようにグラフDBはJOINが多発するような複雑なクエリを迅速に実行することに長けています。皆様の社内システムにおいても、そのようなクエリの実行に非常に時間がかかっている部分は無いでしょうか?また、リレーショナルDBの限界により、リアルタイムの処理を諦めている部分は無いでしょうか?グラフDBを利用することにより、そのような課題を解決できるかもしれません。

 

おわりに

次回は100件以上のグラフDB導入事例を調査した結果を基に、「グラフDBがどのような用途で導入されることが多いのか」についてご紹介する予定です。

Topics: データマネジメント

仲程 隆顕

Written by 仲程 隆顕