LoginSignup
1
1

More than 5 years have passed since last update.

AWS Summit Tokyo 2018で気になった内容メモ_RDBMSだけで本当にいいの?NoSQL on AWSの勘所

Last updated at Posted at 2018-06-07

AWS Summit Tokyo 2018の「RDBMSだけで本当にいいの?NoSQL on AWSの勘所」のセッションを聴いて、個人的に気になった部分をまとめています。
まだ資料が公開されておらず、個人のメモをベースに書いているため、内容が全て網羅されているレポートではありません。
資料、動画が公開されたら別途ちゃんとしたレポートを書きます(多分)

NoSQLでよくある話

  • 特にRDBMSで困ってない
  • NoSQL使ってみたけど運用大変だし、性能悪い
  • NoSQLどういう時に使う?

NoSQLとは

  • RDBMS
    • ストレージに最適化
    • トランザクション処理に強い(これが一番デカい)
    • スケールアウトの煩雑さ
      • まだまだこれからだし、お金もかかる
    • テーブルの運用負荷
  • NoSQL
    • 計算リソースに最適化
    • トランザクション処理は限定的
    • 高いスケーラビリティ
      • もともとここを考えて作られているので
    • クラスタの運用負荷
      • 規模が大きくなるとサーバが増えてくるので

NoSQLの種類

  • KVS
  • カラム指向
  • ドキュメント指向
  • グラフ指向

NoSQLで実現したいこと

  • どこまでスケールしても変わらない基盤
  • 低レイテンシ、高スループット
  • スケールするWebセッション管理
  • Pub/Sub
  • イベント処理
  • Jsonなど複雑なデータの格納

Amazon ElastiCache

  • インメモリKVS
  • フルマネージド
  • ハイパフォーマンス
  • 高いスケーラビリティ
  • RedisとMemcachedが利用可能
  • Amazon Redis(Amazonによる拡張)
    • バックアップの改善
    • フェイルオーバー時の起動が可能

追加機能

  • Redis Cluster Online Resizing
  • セキュリティ機能の強化
  • HIPAA認証取得

Redis Cluster

  • Redis3.2からクラスターのサポート

Redis Cluster Online Resizing

  • Redis Clusterのシャード数をダウンタイム0で動的に増減変更する
  • SNSやLambdaと連携することでAutoScaleも可能
    • メモリの枯渇度に合わせてリソースの増減

DynamoDB

  • フルマネージド
  • 高速
  • スケーラビリティ
  • イベント指向

管理不要で信頼性が高い

  • SPOFが存在しない
  • データは3箇所のAZに保存される
    • 3箇所一気にデータセンターが落ちなければ大丈夫
  • ストレージは自動的にパーティショニングされる

ストレージの容量制限がない

  • 従量課金制のストレージ

追加機能

  • バックアップ/リストアにネイティブ対応
    • 数百TBのデータベースでもパフォーマンス影響なし
  • Global Tables
    • 複数リージョンでデータを共有したテーブルを作れる
    • 全てのローカルにあるリージョンのテーブルに読み書きしたものが非同期にレプリケーションされる
  • Auto Scaling
    • デフォルトで対応
    • キャパシティ設定を動的に管理
  • DynamoDB Accelerator(DAX)
    • 間にキャッシュクラスタを置くことができる
    • パフォーマンス向上、コスト最適化
  • TTL
    • テーブルのITEMの有効期限を設定して、非同期で削除してくれる
    • 設定しておくだけで古い不要なデータの削除が可能

Amazon Neptune

(ここはあんまり理解できてないです・・・)
- グラフDB
- フルマネージド
- SPARQLとGremlinに対応
- Apache ThinkProp、W4C RDFグラフモデルをサポート

グラフDBの得意な領域

  • 高度に連結されたデータ
    • ソーシャル・ネットワーク、レストランのレコメンデーション、不正取引の検出
    • SNSでよく見ているデータとか、家族が見ているデータとか
    • 店のLikeの情報から、その人に対するおすすめを出す
  • 高速
  • 高信頼性
  • 簡単
  • オープン

NoSQLのユースケース

キャッシング

  • DBへのアクセスを減らすためのキャッシュ
  • DBにクエリが走った時にLambdaでElastiCacheに入れたりできる
  • DAXの活用

IoT

  • データ量が多い
  • AWS IoTから送られたデータを、DynamoDBへ保存
    • Redisを使う場合はLambdaをかます

Pub/Sub

  • チャットメッセージのPublishとSubscribeの実行

リアルタイムリーダーボード

  • Redisによるリアルタイムランキング

グローバルアプリケーション

  • DynamoDBのGlobal Tables
    • 全部やると大変なので、グローバルに必要なものだけ切り出して使う(マスタデータとか)
    • 各ローカルで使うようなものは、各リージョンで持てば良い

非同期処理のトリガー

  • DynamoDB Streamsを使い、DBの変更内容をほかサービスへ連携
    • Lambdaと連携する(Lambdaにつなげればもはやなんでもできる)

時系列データが必要なアプリケーション

  • ホットデータとコールドデータでテーブルを分ける

NoSQLのデザインパターンの考え方

NoSQLのデータモデリング

  • RDBMSでの手法を当てはめても、最適でない場合がある
    • 非正規化とか
  • データの連携等にこだわらずに実現したいことにこだわる

DynamoDBのデータモデリング

  • DynamoDBの構造
    • パーティションキーとソートキーがプライマリキーになる
  • Global Secondary Index
    • GSIを自由に作成することで自由に検索できる

事例

  • Mackerel
  • AmazonではOracleから全てDynamoDBに変えた

感想

キャッシュとしてMemcachedやRedisは使っているのでElastiCacheは分かっていたが、DynamoDBはなんとなく「Mongo DBのクラウド版みたいなもん?」くらいにしか思ってなかったので、機能とか設計の考え方とかを色々聞けて参考になった。
作るものの要件次第ではRDBMSの代わりとして十分使えそうだし、手軽に扱えるのも魅力。
Neptuneはこのセッションの日の直前にちょうどGAになったところだったので興味あったけど、まだイマイチ理解できず。
まずグラフDBちゃんと理解したい・・・

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1