Amazon Neptune
高速で信頼性の高いフルマネージドのグラフデータベースサービス
何ができるか
Amazon Neptune は、高度に接続されたデータセットを効率的に保存・クエリするために設計されたフルマネージドのグラフデータベースサービスです。プロパティグラフモデル (Apache TinkerPop Gremlin) と RDF モデル (W3C SPARQL) の両方をサポートしており、数十億のリレーションシップを持つデータに対してミリ秒レベルのクエリ応答を実現します。リレーショナルデータベースでは複雑な JOIN が必要になるような関係性の探索を、直感的なグラフクエリで高速に処理できます。
どのような場面で使うか
ソーシャルネットワークの友人関係やフォロー関係の分析、レコメンデーションエンジンの構築、不正検知における取引パターンの分析、ナレッジグラフの構築と検索、ネットワークトポロジーの管理と可視化、サプライチェーンの依存関係追跡など、エンティティ間の関係性が重要なワークロードで活用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
人脈図に例えるとわかりやすいでしょう。リレーショナルデータベースが名簿 (テーブル) で人を管理するのに対し、グラフデータベースは人と人のつながりを線で結んだ人脈図そのものです。「友人の友人で、同じ趣味を持つ人」のような複雑な関係の検索が、人脈図をたどるだけで瞬時に見つかります。
Neptune とは
Amazon Neptune は、グラフデータの保存とクエリに特化したデータベースサービスです。従来のリレーショナルデータベースでは、エンティティ間の関係性を表現するために複数のテーブルと JOIN 操作が必要でしたが、グラフデータベースではノード (頂点) とエッジ (辺) という直感的な構造でデータを表現します。Neptune はこのグラフ構造に最適化されたストレージエンジンを持ち、深い階層のトラバーサル (探索) でも一定のパフォーマンスを維持します。
クエリ言語とデータモデル
Neptune は 2 つのグラフモデルとクエリ言語をサポートしています。プロパティグラフモデルでは Apache TinkerPop の Gremlin クエリ言語を使用し、ノードとエッジにプロパティ (属性) を持たせた柔軟なデータモデリングが可能です。RDF (Resource Description Framework) モデルでは W3C 標準の SPARQL クエリ言語を使用し、セマンティック Web やリンクトデータの処理に適しています。さらに、openCypher クエリ言語にも対応しており、Neo4j からの移行も容易です。
可用性とスケーリング
Neptune は最大 15 個のリードレプリカを配置でき、読み取り負荷の分散と高可用性を実現します。ストレージは 3 つの AZ にまたがって 6 つのコピーが自動的に複製され、最大 128 TB まで自動拡張されます。Neptune Serverless を利用すれば、ワークロードに応じてコンピューティング容量が自動的にスケールアップ・ダウンするため、容量計画が不要になります。バックアップは S3 に継続的に行われ、ポイントインタイムリカバリにも対応しています。
Azure・オンプレミスとの比較
AWS の優位点
- Gremlin、SPARQL、openCypher の 3 つのクエリ言語に対応しており、プロパティグラフと RDF の両方のデータモデルを単一サービスで扱える柔軟性がある
- ストレージが 3 AZ に 6 重複製され最大 128 TB まで自動拡張されるため、データの耐久性とスケーラビリティを運用負荷なしで確保できる
- Neptune Serverless によりワークロードに応じた自動スケーリングが可能で、アイドル時のコストを最小限に抑えながら突発的な負荷にも対応できる
注意点
- リレーショナルデータベースで十分に表現できるデータに対して Neptune を採用するとオーバースペックになるため、関係性の深さと複雑さを基準に採用を判断すること
- Gremlin と SPARQL はデータモデルが異なるため、同一クラスター内で両方を混在させる場合はデータ設計を慎重に行うこと
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。