Amazon Neptune のアイコン

Amazon Neptune

グラフデータベースをマネージドに提供し、高度に接続されたデータセットを処理するサービス

何ができるか

Amazon Neptune は、プロパティグラフ (Apache TinkerPop Gremlin) と RDF (SPARQL) の両方に対応したフルマネージドグラフデータベースです。ノード (頂点) とエッジ (辺) でデータ間の関係性をモデル化し、複雑な関係性クエリを高速に実行します。最大 3 つの AZ にデータを自動複製し、高可用性を実現します。

どのような場面で使うか

ソーシャルネットワークの友人関係やフォロー関係の分析、不正検知における取引パターンの検出、ナレッジグラフの構築、レコメンデーションエンジン、ネットワークトポロジの管理に利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

人間関係の相関図に例えられます。RDB が表形式でデータを管理するのに対し、Neptune は「A さんは B さんの友人で、B さんは C さんの同僚」のような関係性そのものをデータとして格納します。「友人の友人」のような多段階の関係を高速にたどれます。

Neptune とは

Amazon Neptune は、データ間の関係性を効率的に格納・クエリするグラフデータベースです。RDB では JOIN を多段階に重ねる必要がある「友人の友人が購入した商品」のようなクエリを、グラフのトラバーサル (走査) として高速に実行できます。Neptune Serverless を使えば、ワークロードに応じて自動スケーリングし、アイドル時のコストを抑えられます。

Gremlin と SPARQL

Neptune は 2 つのクエリ言語に対応しています。Gremlin はプロパティグラフ向けの走査言語で、ノードとエッジに任意のプロパティを持たせてグラフを構築します。SPARQL は RDF (Resource Description Framework) 向けのクエリ言語で、主語-述語-目的語のトリプルでデータを表現します。ナレッジグラフやオントロジーの構築には SPARQL、アプリケーションのデータモデリングには Gremlin が適しています。

はじめかた

Neptune コンソールでクラスターを作成し、インスタンスクラスを選択します。VPC 内にデプロイされるため、EC2 や Lambda から VPC 経由で接続します。Gremlin コンソールや Neptune Workbench (Jupyter Notebook) でクエリを試せます。Neptune Serverless を選択すれば、キャパシティの事前設定なしに開始できます。

注意点

  • VPC 内にデプロイされるため、パブリックインターネットから直接アクセスできない。踏み台サーバーや VPN が必要
  • Neptune Serverless はワークロードに応じた自動スケーリングが可能だが、コールドスタート時にレイテンシが増加する場合がある

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。