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
| 特徴 | RDS | RDBMS 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
| 特徴 | Aurora | RDS |
|---|---|---|
| サーバーレス | オプション (Aurora Serverless) | ✘ |
| MySQL, PostgreSQLとの互換性 | △ | ○ (というか、そのもの) |
| マルチAZ構成による負荷分散 | ✘ | ○ |
| 自動フェイルオーバー | ○ | ✘ |
| レプリケーション | 非同期 | リードレプリカのみ非同期 |
| 最大リードレプリカ数 | 15 | 5 |
| リードレプリカの自動ロードバランシング | ○ | ✘ |
| 最大ストレージ数 | 64TB | 32TB |
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