グラフデータベースは、さまざまなデータエンティティ間のリレーションシップを強調する体系的なデータの集まりです。NoSQL データベースは、数学的グラフ理論を使用してデータ接続を示します。データを厳密なテーブル構造に格納するリレーショナルデータベースとは異なり、グラフデータベースはデータをエンティティとリレーションシップのネットワークとして格納します。その結果、これらのデータベースは実際のシナリオのモデリングにより適しているため、パフォーマンスと柔軟性が向上することがよくあります。

グラフとは?

「グラフ」という用語は数学の分野に由来します。グラフにはノードとエッジのコレクションが含まれます。

ノード

ノードは、データオブジェクトを格納する頂点です。各ノードでは、リレーションシップの数と種類に制限はありません。

エッジ

エッジはノード間のリレーションシップを表します。例えば、エッジは親子のリレーションシップ、アクション、または所有権を記述できます。一対多リレーションシップと多対多リレーションシップの両方を表すことができます。エッジには常に開始ノード、終了ノード、タイプおよび方向があります。

プロパティ

各ノードには、それを説明するプロパティまたは属性があります。場合によっては、エッジにもプロパティがあります。プロパティのあるグラフは、プロパティグラフ とも呼ばれます。

グラフの例

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

ソーシャルネットワークグラフの例

グラフデータベースのユースケースにはどのようなものがありますか

グラフデータベースは、ソーシャルネットワーキング、推奨エンジン、不正検出など、データ間にリレーションシップを作成し、そのリレーションシップに対してすばやくクエリを実行するユースケースで威力を発揮します。

不正検出

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

レコメンデーションエンジン

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

ルート最適化

ルート最適化の問題には、データセットを分析し、特定のシナリオに最も適した値を見つけることが関係します。例えば、グラフデータベースを使用して次の情報を見つけることができます。

  • さまざまなパスを考慮した、地図上の A 地点から B 地点までの最短ルート。
  • さまざまな機会、勤務地、スキルを分析した、特定のシフトに適した従業員。
  • 装置のコストや寿命などのパラメータを考慮した、操作に最適な機械。

グラフクエリでは、2 つのノード間のリンク数をカウントして比較できるため、このような状況をより迅速に分析できます。

パターン検出

グラフデータベースは、データ内の複雑なリレーションシップや隠れたパターンを検出するのに適しています。例えば、あるソーシャルメディア企業は、グラフデータベースを使用してボットアカウントとリアルアカウントを区別しています。アカウントアクティビティを分析して、アカウントインタラクションとボットアクティビティの関係を検出します。

ナレッジマネジメント

グラフデータベースは、データ統合、リンクデータ、および情報共有の手法を提供します。複雑なメタデータやドメインの概念を標準化された形式で表現し、自然言語処理のための豊富なセマンティクスを提供します。これらのデータベースは、ナレッジグラフやマスターデータ管理にも使用できます。例えば、機械学習アルゴリズムは、グラフモデルを使用して熱帯雨林のアマゾンと Amazon ブランドを区別します。

グラフデータベースの利点は何ですか?

グラフデータベースは、高度に接続されたデータを管理するためにカスタム構築されています。最新のデータの接続性と量が増加するにつれて、グラフデータベースはデータを費用対効果の高い方法で利用および分析する機会を提供します。グラフ分析の主な利点は次の 3 つです。

柔軟性

グラフモデルのスキーマと構造は、アプリケーションによって変わる可能性があります。データアナリストは、既存の機能に影響を与えることなく、既存のグラフ構造を追加または変更できます。ドメインを事前にモデル化する必要はありません。

パフォーマンス

リレーショナルデータベースモデルは、リレーションシップの量と深度が増すにつれて最適ではなくなります。その結果、データの重複と冗長性が生じます。クエリ結果を検出するには、複数のテーブルを処理する必要があります。対照的に、グラフデータベースのパフォーマンスは、リレーションシップをクエリすると桁違いに向上します。グラフデータの量が増えても、パフォーマンスは一定に保たれます。

効率

グラフクエリは、リレーショナルデータベースに比べて同じレポートをより短時間で効率的に生成できます。グラフテクノロジーはリンクノードを利用します。ノード間のリレーションシップはクエリ時には計算されず、データベース内に永続的に存在するため、結合やリレーションシップのトラバースは非常に高速なプロセスです。

グラフ分析とグラフデータベースの仕組み

グラフデータベースは、標準化されたクエリ言語とグラフアルゴリズムを使用して機能します。

グラフクエリ言語

グラフクエリ言語は、グラフデータベースとのやり取りに使用されます。SQL と同様に、この言語にはデータを追加、編集、クエリする機能があります。ただし、これらの言語は基礎となるグラフ構造を利用して複雑なクエリを効率的に処理します。インターフェイスが用意されているので、次のような質問をすることができます。

  • ノード間のホップ数
  • 最長パス/最短パス/最適パス
  • ノードの価値

Apache TinkerPop Gremlin、SPARQL、およびopenCypherは、人気のあるグラフクエリ言語です。

グラフアルゴリズム

グラフアルゴリズムは、相互接続されたデータのリレーションシップと動作を分析する操作です。例えば、ノード間の距離やパスを調べたり、受信エッジや隣接ノードを分析してレポートを生成します。アルゴリズムは、データ要素をつなぐ一般的なパターン、異常、コミュニティ、パスを特定できます。グラフアルゴリズムの例としては、次のものがあります。

クラスタリング

画像処理、統計、データマイニングなどのアプリケーションでは、クラスタリングを使用して共通の特性に基づいてノードをグループ化します。クラスタリングは、クラスタ間の相違点とクラスタ内の類似性の両方で実行できます。

パーティション

エッジが最も少ないノードでグラフを分割または切り取ることができます。ネットワークテストなどのアプリケーションでは、パーティショニングを使用してネットワークの弱点を見つけます。

グラフ検索またはトラバーサルには、幅優先と深度優先の 2 つのタイプがあります。幅優先検索は、グラフ内の 1 つのノードから別のノードに移動します。最適なパス検出に役立ちます。深度優先検索は、特定のノードのすべてのリレーションを検索するために、単一のブランチに沿って移動します。

グラフデータベースが適さないのはどのような場合ですか?

専用のグラフデータベースは、高度に接続されたデータセットや、隠れたリレーションシップや明らかなリレーションシップを検索する必要がある分析に最も役立ちます。これがあなたのユースケースに合わない場合は、他のデータベースタイプの方が適しているかもしれません。

例えば、商品の在庫を品目ごとに記録する必要があるシナリオを想像してみてください。保存する必要があるのは、商品名や在庫数などの詳細だけです。追加情報を保持する必要がないため、テーブルの列は変更されません。リレーショナルデータベースは表形式であるため、このような無関係なデータにはリレーショナルデータベースの方が適しています。

また、グラフデータベースを単に key-value ストアとして使用しないことも重要です。既知のキーからの検索結果では、グラフデータベースの作成目的の機能が最大化されるわけではありません。

AWS はお客様のグラフデータベース要件をどのようにサポートできますか?

Amazon Neptune は、数十億のリレーションシップを格納し、ミリ秒単位のレイテンシーでグラフをクエリするために最適化された、パフォーマンスの高い専用グラフデータベースエンジンです。Neptune は、プロパティグラフと W3C の Resource Description Framework (RDF) という一般的なグラフモデルをサポートしています。Neptune は、それぞれのクエリ言語 Apache TinkerPop Gremlin と SPARQL をサポートしているため、高度に接続されたデータセットを効率的にナビゲートできるクエリが作成可能です。 Neptune の主な機能は次のとおりです。

  • サーバーレス — グラフのワークロードを細かな単位で即座にスケーリングでき、ピークキャパシティのプロビジョニングに比べてデータベースコストを最大 90% 節約できます。
  • 高い可用性 — 高速ローカル読み取りパフォーマンスをサポートする、グローバルに分散されたアプリケーション用の Amazon Neptune グローバルデータベースを含みます。
  • ストレージとコンピューティングを分離することで、同じ基盤となるストレージを共有する最大 15 個のリードレプリカで読み取りパフォーマンスを向上させることができます。レプリカノードで書き込みを実行する必要はありません。
  • 耐障害性と自己修復機能を備えたストレージ、ポイントインタイムリカバリ、継続的なバックアップなど、高い信頼性と耐久性を備えています。Amazon Neptune は、1 つのコピーに対してのみお支払いいただくだけで、新しい書き込みを 6 つの方法でレプリケートすることで、リージョン内の 3 つの AZ にまたがるデータの耐久性を高めます。
  • 保存時のデフォルトの暗号化、ネットワークの分離、高度な監査により高い安全性を実現すると同時に、きめ細かいアクセスでリソースレベルの権限を制御できます。
  • FedRAMP (中程度および高) から SOC (1、2、3) まで幅広いコンプライアンス範囲をカバーしており、HIPAA にも対応しています。
  • 完全マネージド型であるため、ハードウェアプロビジョニング、ソフトウェアパッチ適用、セットアップ、構成、バックアップなどのデータベース管理タスクについて頭を悩ます必要はありません。

今すぐ無料アカウントを作成して、AWS でのグラフデータベースの使用を開始しましょう。

Amazon Neptune の紹介
Amazon Neptune サーバーレスの使用を開始する