グラフデータベースとは?

グラフデータベースの特徴

グラフデータベースは、リレーションシップの格納とナビゲートを目的として構築されたデータベースです。リレーションシップはグラフデータベースにおける最重要の構成要素で、グラフデータベースの価値の大半は、これらのリレーションシップから引き出されます。グラフデータベースはノードを使用してデータエンティティを格納し、エッジを使用してエンティティ間のリレーションシップを格納します。エッジには常に開始ノード、終了ノード、タイプ、方向があって、1 つのエッジで親子関係、アクション、所有権などを記述できます。1 つのノードが持つことができるリレーションシップの数や種類に制限はありません。

グラフデータベース内のグラフは、特定のタイプのエッジに沿って、またはグラフ全体にわたってトラバースできます。グラフデータベース内では、ノード間のリレーションシップはクエリ時には計算されず、データベース内に永続的に存在するため、結合やリレーションシップのトラバースは非常に高速です。グラフデータベースは、ソーシャルネットワーキング、推奨エンジン、不正検出など、データ間にリレーションシップを作成し、そのリレーションシップに対してすばやくクエリを実行する必要があるユースケースで威力を発揮します。

次のグラフは、ソーシャルネットワークグラフの例を示しています。人 (ノード) とそのリレーションシップ (エッジ) が指定されると、誰が特定の人の「友達の友達」であるかを見つけられます。例えば、Howard の友達の友達、のような情報です。 

ソーシャルネットワーク

ユースケース

不正検出

グラフデータベースでは、高度な不正防止が可能です。グラフデータベースでは、リレーションシップを使って金銭と購入に関するトランザクションをほぼリアルタイムに処理できます。高速なグラフクエリを実行すれば、例えば、購入しようとしている人物が、既知の不正事例に含まれるのと同じ E メールアドレスとクレジットカードを使おうとしていることを検出できます。グラフデータベースは、1 つの個人用 E メールアドレスに関連付けられている複数の人や、同じ IP アドレスを共有しているが異なる住所に住んでいる複数の人などのリレーションシップパターンを容易に検出する助けとなります。 

推奨エンジン

グラフデータベースは、推奨アプリケーションに適した選択肢です。グラフデータベースを使用すると、グラフ内に、顧客の興味、友人、購入履歴などの情報カテゴリ間のリレーションシップを保存できます。可用性の高いグラフデータベースを使用して、同じスポーツをフォローしている他のユーザーや、購入履歴が似ている他のユーザーが購入した製品に基づいて、ユーザーに製品を推奨することができます。または、共通の友人がいても、お互いはまだ知り合いでない人々を特定し、友人関係の推奨を行うことができます。 

人気のあるグラフデータベース

Amazon Neptune

Amazon Neptune は、数十億の関係を格納し、ミリ秒単位のレイテンシーでグラフをクエリするために最適化された、パフォーマンスの高い専用グラフデータベースエンジンです。Neptune は、人気のあるグラフモデルであるプロパティグラフと W3C の Resource Description Framework (RDF) をサポートしています。また、それらに対応するクエリ言語である Apache TinkerPop Gremlin と SPARQL をサポートしており、緊密なつながりのあるデータセットを効率的にナビゲートするクエリを構築できます。 

Neptune は、リードレプリカ、ポイントインタイムリカバリ、Amazon S3 への継続的なバックアップ、およびアベイラビリティーゾーン間のレプリケーションによって、高い可用性を備えています。Neptune はセキュアで、保存時の暗号化をサポートしています。Neptune は完全マネージド型であるため、ハードウェアのプロビジョニング、ソフトウェアのパッチ適用、セットアップ、設定、バックアップなどのデータベース管理タスクに頭を悩ます必要はありません。

AWS re:Invent 2017 での Amazon Neptune の発表

Neo4j

Neo4j は、オープンソースの、非リレーショナル型でネイティブのグラフデータベースで、ACID 準拠のトランザクションバックエンドをアプリケーションに提供します。Neo4j は、プロパティグラフモデルをストレージレベルに至るまで効率的に実装しているため、ネイティブのグラフデータベースとなっています。 Neo4j には、ACID トランザクションへの準拠、クラスターのサポート、実行時のフェイルオーバーを含め、完全なデータベース特性も備わっています。Neo4j は独自の Cypher クエリ言語のほか、Gremlin もサポートしています。

Neo4j の使用を開始する場合は、AWS Marketplace を参照してください。