グラフデータベース 【graph database】
概要
グラフデータベース(graph database)とは、データベースの構造の一つで、データそのものに加え、データ同士の繋がりの情報を格納するデータベース。リレーショナルデータベースが苦手なデータ間の関係性をたどる操作を高速に処理することができる。ここで言う「グラフ」は円グラフや棒グラフといったデータ集合を図で表したものではなく、コンピュータ科学のグラフ理論で取り扱われるデータ構造の一つである。データの集まりを「ノード」(node)「プロパティ」(property)「エッジ」(edge)の3要素の組み合わせとして表現する。
ノードは意味のあるデータ集合の単位(例:ユーザー情報)で、何らかの属性を表すプロパティ(例:ID、氏名、メールアドレス)を持つ。ノードは他のノードと何らかの繋がり(例:友達関係、フォロー関係)を持っており、ノード間の繋がりをエッジという。
構造と特徴
グラフデータベースはデータ集合をグラフ構造に従って格納するデータベースで、各ノードのプロパティとエッジの情報を保管する。ノードを指定してプロパティの書き込みや読み出しを行ったり、あるノードから繋がっている別のノードを素早く参照することができる。
例えば、SNSのユーザー情報で、あるユーザーの友達、友達の友達、友達の友達の友達…と繋がりをたどって関連ノードを挙げていく処理を一般的なリレーショナルデータベースで行うと負荷が大きく時間がかかるが、グラフデータベースでは瞬時に関連ノードを割り出して参照することができる。
一方、リレーショナルデータベースが得意な、プロパティについての条件を指定してノードを検索したり、ノード全体を対象に特定のプロパティの値を集計するといった使い方は難しい。実用上は、大規模で複雑な「繋がり」を含むデータ構造を取り扱う場合に特化して用いられる。
種類と応用
グラフデータベースを実装するための代表的なデータモデルとして「プロパティグラフ」と「RDFグラフ」(RDF:Resource Description Framework)がある。著名な製品としては「Neo4j」「JanusGraph」などがよく知られる。「Amazon Neptune」「Azure Cosmos DB」のようにクラウド上でグラフデータベースを提供するサービスもある。
グラフデータベースの主な応用分野として、SNSなどのソーシャルメディアにおけるユーザー間の繋がりの管理や分析、ECサイトなどで「おすすめ」を表示するリコメンデーション機能、移動や配送などにおける最適な経路の探索、金融機関などで取引情報を分析して不正を検知する機能などが挙げられる。