Amazon Neptune などのグラフデータベースは、リレーションシップを保存し、ナビゲートするために構築された専用のデータベースです。グラフデータベースは、ソーシャルネットワーキング、レコメンデーションエンジン、不正検出など、データ間のリレーションシップを作成し、そのリレーションシップに対してすばやくクエリを実行する必要があるユースケースで、リレーショナルデータベースよりも優れた威力を発揮します。リレーショナルデータベースを使用してこのようなアプリケーションを構築する場合、さまざまな課題があります。複数のテーブルと複数の外部キーを使用する必要があります。このデータをナビゲートする SQL クエリにはネストされたクエリと複雑な結合が必要で、それらはすぐに手に負えない状態になります。また、時間の経過とともにデータサイズが大きくなるため、クエリが適切に動作しなくなります。re:invent 2018 ではグラフデータベースへの入り口となるプレゼンテーションを行い、さらなる情報や詳細を提供しています。
Neptune では、ノード (データエンティティ)、エッジ (リレーションシップ)、プロパティなどのグラフ構造を使用して、データを表現および保存します。リレーションシップは、データモデルの第一要素として保存されます。これにより、ノードのデータを直接リンクできるため、データのリレーションシップをナビゲートするクエリのパフォーマンスが大幅に向上します。Neptune の大規模でインタラクティブなパフォーマンスにより、さまざまなグラフユースケースを効果的に実現できます。
すでにグラフモデルのデータがある場合、Amazon Neptune を始めるのは簡単です。CSV または RDF 形式でデータを読み込み、Apache TinkerPop Gremlin、SPARQL または openCypher を使用してグラフクエリの作成を開始できます。入門ドキュメント、または以下のリンクから AWS オンライン Tech Talk をご覧ください。Amazon Neptune のベストプラクティスについてもまとめています。
グラフでのデータの見え方を理解したい場合、Amazon Neptune でのグラフデータモデルとクエリの裏側の仕組み に関する re:Invent 2018 のプレゼンテーションがあります。Github で入手可能なサンプルコードがついています。
GraphQL で Amazon Neptune にアクセスできるようにすることに関心があるなら、AWS AppSync GraphQL と Amazon Neptune の使い方を示すアプリケーションの例があります。
Amazon Neptune への移行を考えている場合は、re:invent 2018 のプレゼンテーション、Migrating to Amazon Neptune があります。また、GraphML データを Neptune CSV 形式に変換するツールもありますし、AWS Glue ジョブから Neptune への記述に役立つ Python ライブラリもあります。