[レポート] AWSデータベース入門 #AWSSummit

AWS Summit 2018 Tokyo

当エントリでは2018年5月31日に行われた『AWSデータベース入門』に関する内容をレポートしたいと思います。

当セッションの登壇者及び概要は以下の通りです。

スピーカー:
片岡 光康
アマゾン ウェブ サービス ジャパン株式会社
技術統括本部 ソリューションアーキテクト

AWS でシステムを構築したいけど、どんなデータベースサービスがあるのか知らない。また、マネージド型のデータベースサービスを利用するとどの様なメリットが あるのか知りたい。本セッションでは AWS で提供されているデータベースサービスとその特徴、メリットなどをご紹介します。

セッションレポート

AWSのデータベースサービス

  • relational
    • RDS
    • Redshift
  • Non-Relational
    • DynamoDB
    • ElastiCache
    • Neptune
  • Migration
    • DMS
  • どれを使えばいい?

RDS

  • RDSについて
    • フルマネージドなリレーショナルDBサービス
    • シンプルかつ迅速にスケール
    • プラットフォーム
      • Oracle
      • SQL Server
      • MySQL
      • PostgreSQL
      • etc...
  • フルマネージドによる運用負荷の低減
    • オンプレミス vs EC2
      • ハードウェアメンテナンスがない
      • OSインストールが不要
    • EC2 vs RDS
      • ミドルウェアインストールが不要
      • HA構成の検討がない
      • バックアップをRDSサービスとして用意
  • DBAが重要な作業に注力
    • アプリケーションのチューニング
    • 提供されるメトリクスからボトルネックの特定、解消
    • 新施策に向けた検証など
  • Amazon RDSのユースケース例
    • トランザクション
    • 複合クエリ処理
    • DBサイズが16TB未満
    • シングルノードで処理可能(リードレプリカでの対応)

Aurora

  • ハイパフォーマンス
    • 5x faster than RDS MySQL 5.6 & 5.7
      • Read/Write ともに高いスループット
  • インスタンスサイズによるスケール
    • インスタンスサイズに応じて、スループットがスケールする
      • 通常のRDSだと頭打ちにになる
  • アーキテクチャ
    • ログとストレージレイヤの分離
      • S3でストリーミングバックアップ
    • キャッシュレイヤの分離
      • プロセス外にキャッシュを移動
        • DBプロセスが死んでも問題なくリスタートできる
    • ストレージ
      • AZにストレージを分散
      • リードレプリカもマスタも同じストレージ
        • 自動で再ストライピング、ミラー修復、ホットスポット管理、暗号化
  • ユースケース
    • トランザクション
    • ワークロードが高い処理

Redshift

  • クラウド上のDWH
    • ハイパフォーマンス
    • PostgreSQL互換
      • 多くのBIツールが対応
  • スケールアウトの鍵
    • MPP
      • 複数のノードで分散して実行
        • リーダノードがコンピュートノードにタスクを振り分ける
        • ノードを追加すればスケールアウト
    • シェアードナッシング
      • ディスクをノードで共有しない
  • IO削減
    • 列指向
      • データ分析では列単位で集計を行うことが多い
    • 圧縮アルゴリズム
      • 列ごとに類似のデータなので、圧縮率が高い
      • エンコード方式は列ごとに選択可能
    • ゾーンマップ
      • ブロック単位でデータを格納
        • 不要なデータ読み込みをスキップ
  • フルマネージド
    • 運用機能
      • データ更新・挿入
        • S3, DynamoDBからの高速な並列ロード
      • バックアップ
        • S3へ差分保管
        • 自動バックアップ
  • ユースケース
    • DWH, 分析
    • バッチによる大量更新
    • 大規模データ(ペタバイト)

DynamoDB

  • 特徴
    • マネージドNoSQL
    • ハイスケーラブル
    • プロビジョンドスループット
      • 必要な分だけスループットを割り当て
    • ストレージの容量制限なし
    • DAXで高速化
    • TTLでデータのライフサイクル設定
  • ユースケース
    • key-value
    • 高速なパフォーマンス
    • スケーラブル

ElastiCashe

  • 特徴
    • 超高速なエンジン
      • redis, memcachedをサポート
    • フルマネージド
    • 高可用性
  • ユースケース
    • キャッシング
    • pub/sub
    • セッションストア

Amazon Neptune

  • 特徴
    • グラフDB
    • フルマネージド
    • 高可用性
    • Gremlin, SPARQLをサポート
  • ユースケース
    • ソーシャルネットワーキング
    • 不正検出

どれを使えばいい?

  • トランザクション処理、複合クエリ処理が必要ならRelational Database
    • 汎用用途ならRDS
      • パフォーマンス、耐障害性ならAurora
      • 利用コスト、開発者の習熟度、既存システムとの互換性ならその他のRDS
    • 大容量、分析ならRedshift
  • トランザクション処理、複合クエリ処理が不要ならNon-Relational Database
    • レプリケーションならDynamoDB
    • インメモリ、低レイテンシならElastiCache
    • グラフDBならNeptune

おわりに

AWSで利用できる様々なDBサービスについて、その特徴を踏まえて何を選ぶかをまとめた発表でした。個人的には新しく出たグラフDBが気になります。