対象とする読者
この記事は以下の方を対象としています。
- データ アナリスト/サイエンティストの方
- (リレーショナル)データベース管理者・エンジニアで、グラフデータベースを検討している方
グラフとは
分析やデータを取り扱う場合、グラフと言われると棒グラフ・折れ線グラフなどをイメージしがちですがここで説明するのはグラフ理論(グラフ構造)とよばれるものです。
グラフ理論においてグラフとは、バーテックス(ノード/頂点)とエッジ(辺)で構成された図形を指します。
グラフには無向グラフ(Undirected Graph)と有向グラフ(Directed Graph)に分類されます。
-
無向グラフ:バーテックスとエッジで構成された図形
-
有向グラフ:バーテックスと向きを持つエッジ(矢印)で構成されたグラフ
グラフが着目される理由
データを主眼において物事を考えて(分析して)いくと、データには様々な関係性があります。例えば、FacebookやTwitterなどのSNSにおいて、ユーザ同士は「友達」や「フォロー」という関係がありますし、投稿した内容に対して「いいね」をする場合もユーザAがユーザBのXという投稿に対していいねをしたというデータで表され(保存され)ます。
データスキーマ(定義)イメージ
データイメージ
またAmazonなどのEコマースにおいて、「おすすめ(レコメンデーション)」もユーザAが閲覧している商品Xをみた他のユーザが閲覧(または購入)した商品を表示するなどデータの紐付きを利用してそのロジック(アルゴリズム)を構築しています。
データスキーマ(定義)イメージ
データイメージ
このようにデータの関係性を利用したデータ分析(探索)をおこなうためにグラフに特化したデータベース(またはグラフデータを保存できるデータベース)が開発され提供されています。
ではどのような利点があるのでしょうか。
前述にあるようにグラフ データベースは関係性ごとデータとして扱うことを得意としています。いくつかの分析観点からお話をしていきたいと思います。まず一つ目に関係性を保持しているので特定のデータから別のデータまでの経路を探索することが容易に実現できます。例えば、東京都内で地下鉄を利用して新宿駅から日本橋駅までの経路を探索することを考えて下さい。路線図を見れば、新宿駅からどの駅で乗り継ぎが必要なのかを視覚的に理解することが可能です。これがまさしくグラフ構造化されたデータであり、人間にとって視覚的にわかりやすく分析できるのが特徴です。リレーショナル データベースで同じ分析ができるかという観点では、「要件が確定していればできる」が回答です。例えば新宿から隣接する10番目の駅という定まった要件を抽出するだけならリレーショナルデータベースでもできますが、分析に必要な柔軟さ(アドホックな分析を実行する)を持ち合わせていません。
メトロネットワーク図(https://www.tokyometro.jp/station/202006_shosai_ja.pdf)
二つ目に関係性のパターンを検索することができます。以下を例にお話をしていきましょう。SNSで以下の様な関係するデータが存在します。この中から特定のパターンを検索する事も可能です。データが繋がっているからこそデータの関係性のパターンを識別し抽出する、または、最頻出するパターンを見出すなどグラフ構造をデータ抽出に利用できます。
三つ目に関係性を利用した分析のアルゴリズムを適用しやすいというのもグラフ データベースの特徴です。一つ目でお話しした地下鉄の路線から新宿駅から日本橋駅に至るための「最短経路検索」を用いることで、停車する駅数、各駅間走行時間などを活用して経路を求めることができます。またEコマースサイトにおいて、各ユーザの特定の行動(商品閲覧や購買)から「類似度(ジャッカード係数やコサイン類似度など)」を利用したレコメンデーションエンジンを構築することができます。