よんログ

AWSデータベース

前提知識

RDS

  • 以下の中からRDBMSを選択可能
    • MySQL (MyISAMエンジンは非推奨)
    • MariaDB
    • PostgreSQL
    • Oracle DB
    • SQL Server
  • 2つ以上のAZにアクティブ/スタンバイのマルチAZ構成
  • 同期レプリケーション
  • リードレプリカ: 非同期レプリケーションによる読み取り専用ノード (オプション)
    • 別AZ, 別リージョンに作成可能
    • Writerノードに障害発生時にリードレプリカをMasterノードに昇格可能 (データロスの可能性あり)
  • 自動バックアップ
    • 1日毎のスナップショット
    • 5分毎のトランザクションログのバックアップ
  • 自動メンテナンス
    • RDBMSのパッチ適用など, 指定した時間帯 (メンテナンスウィンドウ) に実施
  • データベースおよびスナップショットをKMSで暗号化 (作成時オプション)

RDBMS on EC2 vs RDS

特徴RDSRDBMS on EC2
冗長化手動で構成
自動バックアップ
自動メンテナンス
SSH接続
データファイルの直接操作
システムの直接操作

Aurora

  • MySQLやPostgreSQLがベース (ただし完全互換でない)
  • 3つのAZ毎に2つずつ (計6つ) の同期レプリケーション
  • 読み書き可能なWriterと読み取り専用のReaderの2ノードによるアクティブ/アクティブのマルチAZ構成
    • Writerノードを指すクラスタエンドポイントとReaderノードを指す読み取りエンドポイントを提供
    • Writerノードに障害 (例: AZ障害) 発生すると、Readerノードが自動的にWriterノードに昇格しクラスタエンドポイントが自動的に新Writerノードを指す
  • リードレプリカ: 非同期レプリケーションによる読み取り専用ノード (オプション)
    • 別AZ, 別リージョンに作成可能
    • Writerノードに障害発生時にリードレプリカをMasterノードに昇格可能 (データロスの可能性あり)
  • 読み取りエンドポイントがReaderノード及びリードレプリカのロードバランサとして機能

RDS vs. Aurora

特徴AuroraRDS
サーバーレスオプション (Aurora Serverless)
MySQL, PostgreSQLとの互換性○ (というか、そのもの)
マルチAZ構成による負荷分散
自動フェイルオーバー
レプリケーション非同期リードレプリカのみ非同期
最大リードレプリカ数155
リードレプリカの自動ロードバランシング
最大ストレージ数64TB32TB

DynamoDB

  • KVS + ドキュメント指向なデータベース
  • 3つのAZに非同期レプリケーション (結果整合性)
  • RCU (Read Capacity Unit) とWCU (Write Capacity Unit) によるキャパシティ管理
    • 1RCU = 4kBまでのデータを1秒間に2回読み込む
    • 1WCU = 1kBまでのデータを1秒間に1回書き込む
  • RCUとWCUそれぞれにAuto Scalingを設定可能
    • 最小キャパシティユニット
    • 最大キャパシティユニット
    • ターゲット使用率
  • デフォルトで結果整合性の読み込み
  • クエリ単位で強い整合性の読み込みを指定可能
    • RCUを2倍消費する
  • バックアップ
    • オンデマンドバックアップ: 手動スナップショット
    • 連続的バックアップ: DBテーブルに対する変更 (トランザクションログに近い) をバックアップ
  • DynamoDB ストリーム: DBに加えられた変更を時系列で吐き出すエンドポイント
  • DynamoDB Accelerator: DBアクセスの前段にライトスルー方式の高速なインメモリキャッシュを構成

TODO

  • AWSの責任共有モデル観点での比較
  • ElastiCache
  • Redis vs. memcached
  • Redshift
  • Redshift vs. Athena