Amazon Neptune
# Amazon Neptune
https://d1.awsstatic.com/webinars/jp/pdf/services/20180703_AWS_BlackBelt_AmazonNeptune_public.pdf
## Amazon Neptune の位置付け
- 1:1
- Key-Value ストア
- Amazon DynamoDB
- Amazon ElasticCache
- 多:1
- 多:多
- グラフデータベース
- Amazon Neptune
- 関連性に対する質問に答えるために作られる
## グラフDBのユースケース
- ソーシャルグラフ(人同士の関係)
- レコメンデーション
- ナレッジグラフ
- 不正検出
- ライフサイエンス
- ネットワーク/IT運用
- 従来のDBの課題
- RDBMS だと多対多を表現するのは課題が多い
- スケールが難しい
- 高可用性を維持するのが難しい
- 高価
- オープンスタンダードに対して限定的なサポートしかない
- グラフ処理の分類
- OLTP(Online Transaction Processing)
- 1処理単位でグラフの一部を探索
- レコメンデーション・不正検知など
- 並列かつ大量に実行される
- OLAP(Online Analytical Processing)
- 1処理単位でグラフの全てを探索
- クラスタリング・全ノードの重みバランスの調整など
- 1度の処理が大きい
## Amazon Neptune の特徴
- 高速
- クエリ性能
- OLTP のグラフワークロードにおいて毎秒10万県のクエリをサポート
- 索引を作成する必要がない
- リードレプリカ
- 15ノードまでスケール
- 読み込みエンドポイントの提供
- 高信頼性
- リードレプリカ
- 障害時にはマスターに昇格
- 3AZ、合計6レプリカ
- セグメントごとにS3に継続的にバックアップされる
- ノードやディスクは継続的に修復される
- 読み書きにはクォーラムシステムを利用(分散システムに利用される投票システム)
- 最大64TB
- リクエストのIAM認証
- 暗号化
- KMSも利用できる
- 簡単
- オープン
- モニタリング
- CloudWatch によるモニタリング
- 2つのグラフモデルとフレームワーク
## 料金
裏側にインスタンスがあるタイプのサービス
## 構成
- Neptune は VPC内に配置される(インターネットからは直接アクセスできない)
- Lambda から直接アクセスはできない(VPC Lambda を利用)
- 起動する際には少なくとも2つ以上のAZにサブネットが必要
- 書き込みエンドポイントは書き込み可能なマスタインスタンスに解決
- 読み込みエンドポイントはいずれかのリードレプリカに解決
- バルクロード用S3バケット
- Neptune DB に外部ファイルからデータをロードする
- 同一リージョン内に用意
- IAMの許可
- インターフェース
- 何種類か選択肢がある
## 何のために利用するのか
- 一部を見るための可視化
- 視覚的にターゲット周辺の構造を把握
- 全体を見ても大規模グラフでは情報過多になってしまう
- Neptune 自体は可視化の機能は持っていない
- オープンなインターフェースなのでOSSなどを利用できる
## 雑感
ソーシャルメディアやマッチングアプリなどで人との関係性を分析したい時に選択肢にあがるDB。
裏側にEC2が見えるサービスなのでDocumentDBと似たような感じなのだろうか。
サービス自体の価値を提供するのではなく、分析することでより価値を提供する。といった使い方になる。