2022年5月31日火曜日

グラフデータベースとは

グラフデータベースはよく耳にするが、その仕組みは何ぞやと疑問に調べてみました

「グラフ」とは、Excelの折れ線グラフ(=チャート)などではなく、ネットワーク状のデータ表現であることという

ついつい折れ線グラフと思っていたが違っていた

グラフ検索を可能にしている土台には、「グラフ理論」です

1.グラフデータベースとは

グラフDBとは一言で言うと、グラフ構造を備えたデータベースのことである。データの構造が従来のリレーショナルではなくネットワーク状になっている場合に、格納・検索の面で威力を発揮する

グラフは「ノード」「エッジ」「プロパティ」の3要素によって、ノード間の「関係性」を表現できる(図表1)

ノード(node):別名バーテックス、頂点。点や丸で表現されるエンティティー。「ラベル」を付けて種別を分類することが多い

エッジ(edge):別名リレーションシップ、辺。ノード間の関係性を表す。方向とタイプを有する

プロパティ(property):別名、属性。ノードとエッジにおける属性情報。データはkey/value形式で保持される

2.グラフ理論について

プロイセンのケーニヒスベルグ(現ロシア連邦)のプルーゲル川には、中洲を挟んで7つの橋がかかっており、当時、町の人たちは「どこか1つの場所から7つの橋を1度ずつ全部渡って、元の場所に帰ってこられるか」という問題を議論していた。

数学者のオイラー(Leonhard Euler)は、地点と橋を点と線(ノードとエッジ)の図形に単純化し、「この図形は一筆書きで書くことができない」ので、既述の問題の課題は無理であることを数学的に証明して見せた。これがグラフ理論の始まりと言われている。

代表的なグラフ検索のアルゴリズムとしては、ツリー構造のグラフで目的の情報を探す「幅優先検索」や「深さ優先検索」、重み付けされたエッジを加味して最短経路検索を行うダイクストラ法やA*法などがある

要は点と線を結んだネットワークなので、地下鉄の路線図、SNSの人と投稿記事の関係性、脳神経系、塩基配列、インターネットなども広い意味ではグラフとみなせる

3.グラフDBとRDBとの違い

グラフDBでは、テーブル単位ではなく個々のデータ単位で「つながり」が保持される。RDBでは外部キー(インデックス)を使ってエンティティー(ノード)を2次的につなぐのに対し、グラフDBのモデルではエンティティー間のリレーションが明示的に組み込まれている。

RDBはインデックスの参照やテーブルを連結したビューの用意で時間がかかるのに対し、グラフDBはノードがもつ隣接ノードの情報をたどるだけなので、回答が速い(図表3)。

ネットワークの規模が巨大になるほど、膨大な数のノードのネットワークから目的を探索する際に、パフォーマンスを落とさずに結果を返すことができ、ビッグデータ時代に活躍できる能力を秘めているのである。


図表4は、SNS内で友達の友達を最大5段階の深さまで見つける検証の結果である。それぞれが約50人の友達をもつ100万人規模のSNSでは、効率の差が如実に現れる。深さ3(友達の友達の友達)になると、RDBでは実用的な時間でクエリーに対処できないのは明らかだ。


一方、グラフDBはデータ全体からの統計情報を分析する手続きなどは苦手で、そもそもデータ構造が「つながり」をもたない表だけであれば、グラフDBで処理するメリットは乏しい。どんなケースでもRDBに置き換わるわけではないということだ。ちなみにグラフDBは、非リレーショナルデータベースを意味するNoSQLデータベースの1つに分類されることもある。

4.グラフDBの活用例

ソーシャルグラフ

SNSのソーシャルグラフはグラフ構造の典型である。友達の友達という探索ができるほか、フォロワーが多くて影響力の強いユーザーを見つけ、その行動や購買が個人の挙動に及ぼす影響の洞察も得られる。

さらに口コミでの浸透を期待したバイラル・マーケティングを実施したり、特定の事項・趣味について集まる集団(クラスタ)に対してピンポイントに情報提供するターゲットマーケティングなどが商用でも期待されている。


リコメンデーション

ソーシャルグラフの応用とも言えるが、とくにECサイトなど購買行動が関係する際に有効である。「スポーツ」をフォローしている3人の顧客ユーザーがおり、そのうち2人が実際に製品を購入したので、残りの1人も製品を購入するかもしれない。そのユーザーがログインしたECサイトのページには、「これを購入された方は、こちらも購入されています」と表示される(図表5)。


経路検索

カーナビのような最短経路検索のほか、物流でどのルートを順に回れば一番効率がよいか、また交通網が事故で一時的に停止したときや複雑なアクセス権限のあるシステムで権限付与を変更したときに、後続にどのような影響が出るかをシミュレーションできる。

図表6は中継機器ノード、ネットワーク回路をエッジに置き換えてグラフで図示している例である。故障したときにどの経路をたどれば通信品質を保てるか、古くなった機器を交換するときにどの順で止めればいいか、その影響度を調査できる。


5.ソリューションとクエリー環境 

ベンダー製品では、Neo Technology社のNeo4jが圧倒的なシェアを占める。検索結果がグラフ描画や表、JSONでインタラクティブに表示されるWebの管理ユーザーインターフェースも付属していて使いやすい

Neo4jでグラフ構造のデータ処理を行う場合は、CypherというSQLライクなクエリー言語を用いる(図表10)。ホワイトボードに書いたネットワーク図をそのまま文字に起こしたようなアスキーアートに似ていて、扱いが容易である。