Upgrade to Pro — share decks privately, control downloads, hide ads and more …

グラフ型データベース 「Amazon Neptune」が丸裸にする クラスメソッド大阪オフィス

TomoyaIwata
October 11, 2019

グラフ型データベース 「Amazon Neptune」が丸裸にする クラスメソッド大阪オフィス

2019/10/11に開催されたDevelopers.IO 2019 in 大阪で発表させて頂いた際の資料です

TomoyaIwata

October 11, 2019
Tweet

More Decks by TomoyaIwata

Other Decks in Technology

Transcript

  1. 9 プロパティグラフモデルの構成要素 person event person person name:user1 age: 30 name:Developers.IO

    2019 in ⼤阪 date:2019/10/11 join join join person join name:user2 age: 32 name:user4 age: 28 name:user3 age: 40
  2. 10 プロパティグラフモデルの構成要素(ノード) person event person person name:user1 age: 30 name:Developers.IO

    2019 in ⼤阪 date:2019/10/11 join join join person join name:user2 age: 32 name:user4 age: 28 name:user3 age: 40 ノード ノード ノード ノード ノード
  3. 11 プロパティグラフモデルの構成要素(エッジ) person event person person name:user1 age: 30 name:Developers.IO

    2019 in ⼤阪 date:2019/10/11 join join join person join name:user2 age: 32 name:user4 age: 28 name:user3 age: 40 エッジ エッジ エッジ エッジ
  4. 12 プロパティグラフモデルの構成要素(ラベル) person event person person name:user1 age: 30 name:Developers.IO

    2019 in ⼤阪 date:2019/10/11 join join join person join name:user2 age: 32 name:user4 age: 28 name:user3 age: 40 ラベル ラベル ラベル ラベル ラベル ラベル ラベル ラベル ラベル
  5. 13 プロパティグラフモデルの構成要素(プロパティ) person event person person name:user1 age: 30 name:Developers.IO

    2019 in ⼤阪 date:2019/10/11 join join join person join name:user2 age: 32 name:user4 age: 28 name:user3 age: 40 プロパティ プロパティ プロパティ プロパティ プロパティ
  6. 14 代表的なグラフ型データベース • neo4j • 恐らく現状最も⼈気の⾼いグラフ型データベース • パナマ⽂書の分析で有名に • TitanDB

    -> JanusGraph • Titanは開発停⽌ TitanからforkしたJanusGraphがLinux Foundation 配下のプロジェクトとして開発継続中 • バックエンドのDBにApache CassandraやElasticsearchが利⽤可能
  7. 18 Amazon Neptuneの利⽤事例 NIKEアプリのバックエンドで利⽤ • Cassandra on EC2の構成からNeptuneへ移⾏ • EC2の保守作業が不要に

    • 複数のクエリで実現していた処理が1つのクエリで実現可能に • Cassandraよりも少ないvCPU,メモリでも処理が⾼速に • Amazon NeptuneはCloudwatchと統合されているためモニタリ ングがシンプルに
  8. 19 Amazon Neptuneの料⾦体系 ※2019年9⽉時点の東京リージョンでの料⾦ インスタンスタイプ 料⾦ db.r5.large 0.42USD/時間 db.r5.xlarge 0.84USD/時間

    db.r5.2xlarge 1.68USD/時間 db.r5.4xlarge 3.36USD/時間 db.r5.12xlarge 10.08USD/時間 db.r4.large 0.42USD/時間 db.r4.xlarge 0.84USD/時間 db.r4.2xlarge 1.68USD/時間 db.r4.4xlarge 3.36USD/時間 db.r4.8xlarge 6.72USD/時間 ストレージ料⾦ GB あたり⽉額料⾦ 0.12USD I/O 料⾦ 0.24USD/100 万件のリクエスト オンデマンドのインスタンス料⾦ データベースストレージおよびIO バックアップストレージ ストレージスナップショット料⾦ GB あたり⽉額 0.023USD インターネットへのデータ転送送信 (アウト) 1 GB まで/⽉ 0.00USD/GB 次の 9.999 TB/⽉ 0.12USD/GB 次の 40 TB/⽉ 0.09USD/GB 次の 100 TB/⽉ 0.07USD/GB 150 TB /⽉より⼤きい 0.05USD/GB
  9. Private subnet 25 構成 Amazon Neptune AWS Cloud VPC Public

    subnet Amazon EC2 データLoad クエリ発⾏ Amazon Simple Storage Service (S3) AWS Lambda #misc-osakaの やり取りを抽出 抽出結果を S3に保存
  10. 36 分析2のクエリ g.V().has('id', '<iwata-id>').as('iwata')¥ .out('react').in('post').where(neq('iwata'))¥ .groupCount().order(local)¥ .by(values, desc).limit(local, 5)¥ .unfold().select(keys)

    ¥ .group().by('name')¥ .by(out('react').in('post').groupCount()¥ .by('name').order(local)¥ .by(values, desc).limit(local, 5)).unfold()