[レポート] DAT310 :Amazon Neptuneを使って初めてのグラフアプリケーション構築 #reinvent

re:Invent2018で開催されたAmazon Neptuneに関するワークショップ DAT310「Building Your First Graph Application with Amazon Neptune」のレポートです
2018.11.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

サーバーレス開発部@大阪の岩田です。 この記事はre:Invent2018で開催されたAmazon Neptuneに関するワークショップ DAT310「Building Your First Graph Application with Amazon Neptune」のレポートになります。

概要

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

In this session, get hands on with Amazon Neptune and build a cloud-based graph application. Learn how to quickly load data and begin writing Gremlin traversals.

グラフ型データベースAmazon Neptuneについてハンズオン形式で学習するセッションです。 実際にNeptuneのインスタンスにデータを投入し、JupyterNotebookからクエリの発行を行いました。

スピーカー

  • Divij Vaidya - Sr. Software Dev Engineer
  • Sainath Mallidi - Senior Software Dev Engineer

座学

まずはグラフ型データベースやNeptuneに関する座学から

グラフ型データベースのコンセプトとユースケース

  • コンセプト
    • エンティティ間のリレーション、つながりを表現
  • ユースケース
    • ソーシャルネットワーク
    • レストランのレコメンデーション
    • 不正検知

グラフのモデルとフレームワーク

  • プロパティグラフ
    • OSSのApache TinkerPop
    • クエリ言語はGremlin Traversal Language
  • RDF
    • W3C標準
    • クエリ言語はSPARQL このワークショップではApache TinkerPopとGremlin Traversal Languageを使用

Amazon Neptuneについて

  • クエリが高速
  • 信頼性が高い
  • GremlinにもSPARQLにも対応しており使いやすい
  • オープン

Amazon Neptuneのアーキテクチャ

  • GremlinもSPARQLも共通のグラフエンジンが処理
  • ストレージはクラウドネイティブな特性を備えている
    • マルチAZ
    • リードレプリカ
    • 暗号化

Amazon NeptuneとApache TinkerPop

  • Gremlin3.3.2に完全互換
  • クエリ実行エンジンが最適化されている
  • Gremlinから強化されている点も

Gremlin Traversal Languageの基礎

ハンズオン

使用したコードはGitHubで公開されています https://github.com/triggan/neptune-workshop-ui

環境構築

CloudFormationのテンプレートからNeptuneインスタンスとクエリ発行用にSageMakerのノートブックインスタンスを構築

データモデル

  • 映画
  • 俳優
  • 一般人
  • 場所

ユースケースに沿ったクエリの実行

JupyterNoteBookから「あーでもない、こーでもない」と考えながらクエリを実行しながら理解を深めました。

まとめ

以前Neptuneを触った時は素のEC2インスタンスからgremlin-consoleを使ってクエリを発行していたのですが、SageMakerのノートブックインスタンスを使うという発想が面白かったです。

https://dev.classmethod.jp/server-side/db/neptune-handson-2/

グラフ型データベースは色々な可能性を秘めているとは思いますが、じゃあ実際どうやってアプリを作っていくのか? という部分の情報が少ない様に感じています。 こういったハンズオンの機会を活用しながら今後も情報収集していきます!!