効率的な検索を可能にする、グラフデータベース

アクセリアの研究
データ間の関係性をデータベースに反映可能
 今回は、検索効率に注目した「グラフデータベース」について取り上げたいと思います。
 グラフデータベースは、リコメンデーションエンジン、ネットワークやIoT デバイスのオペレーション、検索エンジンなどで利用されているデータベースのひとつです。データとその関係性をグラフ構造であらわし、モデル化・検索することができます。

 一般的によく用いられているRDB (Relational Database)では、テーブル型に構造化されたデータのインデックスを用いて管理する事で、データ全体から検索をしてデータ群を得ることに特化しています。
 一方で、グラフデータベースでは、データだけでなく、データ間の関係性をデータベースに反映させることができます。データベース上のグラフ情報から、関連情報で絞り込んだ上でデータを検索することができるため、より効率的な検索が可能です。

 ここで言う「データ」や「関連」とは、 例えば「Aさんの友達はBさんである」と言う情報を表す場合、データは「Aさん」と「Bさん」になり、関連は「友達」になります。
学校の実態をモデル化した例
 例をもう少し複雑にしてみましょう。ある学校の実態をモデル化した例を取り上げます。

 学校には、以下のような「データ」と「関連」があることに注目してグラフデータベースを作成します。

 ・データ
  人(個人名)、役職(teacher、student、クラブ等)
 ・関連
  役割(role)、所属(member)


図:グラフデータベース:ある学校の状態をモデル化した例

 学校をグラフ化した場合、学校というデータに対して人や役職がデータになり、役割、所属などのデータ間の関連性を表す(role,member)が関連となります。
 また、学校にはクラブ活動が存在し、生徒と教師が所属することになります。このとき、生徒のヤマダさんを検索する場合、グラフデータベースでは「student」というデータを持つグラフの一部のみが検索対象になるため効率的に検索できます。また、放送部に所属するスギヤマさんを検索する場合にも同様の事が言えます。ただし、クラブから人への関係(member)は定義されていますが、逆方向の定義はされていないため、このグラフでは「スギヤマさんが所属するクラブ」というような条件では参照する事ができない事になります。このことから、グラフデータベースでは、グラフの定義の方法をよく考えることが重要となります。
大きな特徴は、データの可視化が容易になり、効率的な速い検索ができること
 グラフデータベースには2つの特徴が挙げられます。
 1. グラフデータベースのデータは、実際のデータの相互関係と同じ構造でモデリングすることができます。グラフデータベース内でのデータの構造が実際のデータと一致している点からも、データの可視化が容易にできると言ったメリットもあります。
学校の例だと、どのクラブにどの生徒が所属しているかが視覚的に把握できます。
 2.グラフデータベースは、データの関係に注目しているため、データ間の関係性を検索に含めることができます。また、データの関係箇所だけを局所的に検索できるため、データ全体からの検索が必要ない場合が多いことも特徴のひとつです。
 学校の例には「キムラ」が2人いますが、その関係性を検索に含めることで、効率的でより速い検索が可能になります。

 現在は、SNSでのつながりを予測して「知り合いかも」と表示したり、検索や購入した商品と親和性の高い商品を「おすすめ商品」として表示するのにグラフデータベースが実際に利用されています。

 アクセリアでは、グラフデータベースの利用分野として、様々な方向性から考えております。ひとつの例としては、P2P動画配信サービスのクライアントノードのコネクション管理やノード間での通信の管理や可視化などといった方向性で利用しております。
 グラフデータベースを用いることで、今までRDBでは気がつくことができなかったような複雑なデータ間の関係を見つけることも可能ではないかと考えております。「このデータが”見える化”できたらいいのに…」といったことがありましたら、「グラフデータベース」という単語を思い出してみてください。

■関連ページ
【アクセリアのサービス一覧】
 ・サービスNAVI

東原 大記

アクセリア株式会社 研究開発部 所属