[レポート] DAT316 :How Do I Know I Need an Amazon Neptune Graph Database #reinvent

はじめに

サーバーレス開発部@大阪の岩田です。 この記事はre:Invent2018のDAT316 How Do I Know I Need an Amazon Neptune Graph Database?のレポートになります。

概要

以下が公式の概要となります。

When do you need to use a graph database? What kinds of applications can benefit from using a graph-based approach? In this session, learn how customers are using graph databases to accomplish use cases from knowledge graphs to recommendations to network security. Hear how PricewaterhouseCoopers (PWC) is using graph-based approaches with Amazon Neptune and partners to build new applications. See how Tom Sawyer Software helps to visualize Amazon Neptune graphs.

いつグラフデータベースを使う必要があるのか?グラフ型データベースを使うとどのようなアプリケーションにメリットがあるのか?といったユースケースに加えて、ゲストスピーカー2人からそれぞれプライスウォーターハウスクーパースの事例と、Tom Sawyer Software社のツールによるAmazonNeptuneのビジュアライズについての紹介がありました。

スピーカー

  • Brad Bebee - Principal Product Manager
  • Anton Fajardo - Sr Director Strategic Technologies, PWC
  • Corinne Koder - Product Development Director, Tom Sawyer Software

レポート(序盤)

まずはグラフDBとNeptuneの概要について

グラフDBはどのようなユースケースに使えるか?

  • コネクションとリレーションを表現、パターンを発見するのに使える
  • SNSのアプリなどで利用されている
    • Neptuneにマイグレーションした事例も

購買履歴からのレコメンデーション

  • 購買履歴とユーザー間のつながりからオススメの商品を分析

誰が?何を?いつ、どこで?の分析 モナリザの例

  • 様々なリレーションを組み合わせた複雑な質問に回答できるのがグラフDBの強み

グラフDBの課題とNeptuneを使うことのメリット

  • スケール
  • クエリのパフォーマンスチューニング
  • JVMのパラメータ調整に難しさ
  • Neptuneがこれらの問題を解決

レポート(中盤)

ここからPWCの事例について

データサイエンティストの時間無駄遣い

  • データサイエンティストは多くの時間を無駄にしている
  • AWSのサービスとグラフDBを使うことで問題を解決

Pharmaのナレッジ

航空会社のユースケース

  • 元々はRDBで複雑なことをしていた
  • 複雑なクエリが簡単に実行できるように

セキュリティ分野でのユースケース

  • 脆弱性の情報から関連するPCを特定
  • 可視化することで影響範囲が分かりやすく分析できる

レポート(終盤)

ここからTom Sawyer Softwareの製品紹介など

Tom Sawyer Softwareの紹介

  • グラフDBが得意
  • Visualizationのアプリを提供している
  • AWSのMarket Placeに色々公開している

Tom Sawyer Softwareの主要顧客

  • 多くの顧客と取引がある

グラフアプリの作り方

  • データの集めてNeptuneに流し込む
  • アプリの設計とデプロイ

NeptuneとS3の接続

  • Neptuneのエンドポイントを使ってS3のデータを流し込む

Graph Database Browserのデモ

ここからはGraph Database Browserのデモでした。

  • GUIでのリアルタイム分析できる
  • 動的なフィルタ、色付け
  • 人同士のつながりの可視化
  • 地図のドリルダウンなど

質疑応答

色々質問が上がってたのですが、聞き取れた分だけ記載します。 ※ちゃんと意図を汲み取れてるかあまり自信がありません

Neptuneへのデータロードについて

Q.S3からNeptuneへどうやってデータを突っ込むのか?

A.CSV形式で頂点(vertex)とエッジ(Edge)のファイルを用意する。もしくはRDFのファイルを用意する。RDBからデータを抽出してETL処理にかけてロード用のデータを生成するのがオススメ。

Neptuneへの接続について

Q.アプリからどうやってNeptuneにアクセスする?

A.Websocketのエンドポイントが作成されるのでそれを使う。API GWやLambdaを組み合わせてアプリ向けAPIを作成するような使い方もある。

サポートされるクエリ言語について

Q.Cypherはサポートされないのか?

A.利用できるクエリ言語はGremlinとSPARQL。Cypherをサポートする予定は今の所ない

認証・認可について

Q.特定のユーザーに特定のグラフへのアクセスを許可・拒否するような制御は可能か?

A.IAMユーザーでの認証・認可のみ対応しており、特定のグラフやプロパティへのアクセスを制御することはできない。必要に応じてアプリ側で実装する必要がある。

まとめ

Graphdata browserのデモを見ることができ、実際にデータアナリストがどのようにNeptuneを活用しているのか、具体的にイメージすることができました。 あまり普段の業務で使うことのないサービスですが、色々な分析ができて面白いサービスなので、今後もしっかり情報収集していきたいと思います!