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) で理解を深められます。