そもそもの理解を深めるための自分用メモ
RDB
Amazon RDS
AWSのマネージドサービス型RDS(いわゆるSaaS型)
Aurora、PostgreSQL、MySQL、MariaDB、Oracle データベース、SQL Server から選択できる
Auroraとそれ以外でアーキテクチャが異なる
ログやスナップショットはS3に保存可能
通常のRDS
ベースはEC2のDB用インスタンス
用途に合わせてオファリング+ストレージタイプを設定することが可能
マルチAZによる高可用性と複数のリードレプリカを作ることで読み込み負荷の軽減が可能
ストレージは3種類のから選択することができる
・汎用SSDストレージを使用した場合
(コスト効率の高いストレージ)
1GB当たり3IOPS→ボリュームが大きいほどパフォーマンスが上がる
ただし3000IOPSでバーストするためワークロードのにーずを満たすように設定する必要がある
(「バースト」とは、利用しているボリュームのベースラインパフォーマンスを超えたI/O性能を発揮させること。
バーストが継続可能な期間は、バースト開始時点でのI/Oクレジットバランスの残量に制限され、残量が0となるとベースライン以上のパフォーマンスは出ません。)
・プロピジョンIOPS SSDストレージを使用した場合
(I/O重視のワークロードの場合)
インスタンス作成時、それぞれDBエンジンごとにIOPSとストレージの範囲が異なる
マグネティックストレージは下位互換のため非推奨で下記制限事項がある
- SQL Server データベースエンジン使用時には、ストレージをスケーリングできません。
- Elastic ボリュームをサポートしていません。
- 最大サイズが 4 TiB に制限されます。
- 最大で 1000 IOPS に制限されます。
↑参照
Aurora
AWS的にはMySQLを使う場合にはAurora推奨(でもPostgreSQLでも使える)
MySQLは5.6と5.7を選択可
Aurora DB クラスターは1 つ以上の DB インスタンスと、これらの DB インスタンスのデータを管理する 1 つのクラスターボリューム、Aurora クラスターボリュームは、複数のアベイラビリティーゾーンにまたがる仮想データベースストレージボリュームで構成されている
ストレージが10GBから64TBまでシームレスに、ダウンタイム無しで自動拡張
データは、3AZに2つずつ、合計6重化されて保存されるというありがたさ
最大15個のレプリカ可能で障害時のフェールオーバーも早い
アーキテクチャはこの図が非常にわかりやすい
インスタンスはメモリ最適化タイプとバーストタイプがある
公式で正確な数字は出ていないが、
「MySQL のスループットの 5 倍、PostgreSQL のスループットの 3 倍を実現」とのこと
Azure Database for MySQL/PostgreSQL/MariaDB
AzureのPaaSのDB
MySQLはバージョン5.6と5.7、PostgreSQLは9.5.14と9.6.10と10.5
MariaDBはバージョン10.2に対応
最近PostgreSQLのCitusによるハイパースケールが実装されてこれがかなり強力
(これはまたアーキテクチャが異なる)
こちらもストレージは3種類のから選択することができる。
とはいえAWSと比較するとお話しにもならない
Basic:開発やテストなどI/Oパフォーマンスを必要とする場合
汎用:Webやモバイルアプリなど負荷分散されたコンピューティングとメモリ、およびスケーラブルな I/O スループットを必要とする場合
メモリ最適化:リアルタイムデータや分析など高速トランザクション処理と高いコンカレンシーを実現するためのインメモリ パフォーマンスを必要とする場合
Azure SQL Database*
こちらは上記OSSのDBとはまた別のアーキテクチャで実装されている
またパフォーマンスとコストのニーズに合わせて2タイプから選べる
仮想コアベース(推奨):プロビジョニングされたサーバとサーバレス(プレビュー)のいずれかを選択できる。
DTUDatabase Throughput Unit)ベース:コンピューティング・ストレージ・IOリソースがパッケージされている(柔軟性が低い)
スペックに関しては推奨の仮想コアベースのみ記載
CPUモデルGen4の場合
Google Cloud SQL
MySQL,PostgreSQL,SQLServer から選択できるフルマネージドデータベースサービス
Cloud Spanner はハイブリットタイプのため別扱い
MySQLは第1世代と第2世代のインスタンスを選択可能
(ただし第1世代は2020年1月サポート終了予定)
第 2 世代インスタンスは、MySQL 5.6 と 5.7 をサポートし、最大で 416 GB の RAM と 10 TB のデータ ストレージを使用でき、必要に応じてストレージを自動的に増やすオプションあり。
第 1 世代インスタンスは、MySQL 5.5 と 5.6 をサポートし、最大で 16 GB の RAM と 500 GB のデータ ストレージを使用可能
PostgreSQLは第2世代のみで最大 416 GB の RAM と 64 個の CPU を搭載するカスタム マシンタイプ、最大 10 TB までのストレージを利用可能。
(必要に応じて、ストレージを自動的に増やすことが可能)
バージョンは9.6、11.1 ベータ版をサポート
選択するディスクによってパフォーマンスが変わる
SSD、HDD、Backupから選択可
長くなってしまったので、NoSQLに関してはまた別でまとめたいと思います