AWSの代表的なデータベースサービス
Amazon RDS(Relational Database Service)
RDSで選択できるDBエンジンは6つある。
- Amazon Aurora (PostgreSQL or MySQL を選択可)
- MySQL
- PostogreSQL
- Maria DB
- Oracle
- Windows SQL Server
EC2にDBをインストールして利用することもできる。
RDSを使うことで、DBのアップデート・負荷監視・バックアップなどの管理業務から解放され、テーブル作成やSQLクエリ最適化など、アプリケーション部分の最適化に注力することができる。
RDSが行ってくれる主な管理業務は3つ。
メンテナンス | 設定したタイミングでOSやDBエンジンのアップデートが行われる。 |
バックアップ | デフォルトで7日間のDBデータの自動バックアップが行われる。 バックアップしたデータは、秒数まで指定して特定時点に復元することができる。=ポイントタイムリカバリー |
高可用性 | RDSのマルチAZ配置をオンにすることで、複数AZにレプリカが作成される。 |
高可用性についての補足
マスター – スタンバイ という構成を取る。
この一連の構成をクラスターという。
マスターに障害が発生したときに、スタンバイしているDBが自動でマスターに昇格する。
このことをフェイルオーバーという。
リードレプリカについての補足
レプリカのうち、読み取り専用に利用される、つまりSELECTのみに利用されるものをリードレプリカ(Read Replica)と呼ぶ。
Read Replicaは頻度の高いSELECT文をさばくために利用され、INSERT/UPDATE/DELETEはマスターレプリカに対して実行され、その結果が随時リードレプリカに反映される。
Amazon Aurora
Amazon Auroraはクラウドに最適化されたAmazonが開発したRDBである。
DBエンジンとしてPostgreSQLかMySQLを選択できる。
PostgreSQLやMySQLとの違いは下記の通り。
リードレプリカ | 最大15個作成できる |
性能 | Postgre SQLやMySQLと比べて5倍の性能 |
結論として、PostgreSQLやMySQLを選択するなら、Auroraを使う方が良い。
Amazon DynamoDB
DynamoDBはフルマネージド型のNoSQLデータベースである。
RDSはインスタンスタイプやストレージを選択するが、DynamoDBはそれらもAWSが管理している。そのためフルマネージド型と呼ぶ。
RDSとはデータベースモデルが違うので注意すること。
RDSはリレーショナルデータベース、DynamoDBはNoSQLデータベースである。
NoSQLはキーバリューストアと呼ばれる。
キーに対してJSON形式のオブジェクトを保持するモデルである。
JOINや高度な検索はできないため、利用用途で適用可能かは明確に判断される。
RDSとDynamoDBのパフォーマンス向上策の違い
RDSはトランザクションの概念があるため、マシンを分散することできない。
そのため、マシン性能をアップする垂直スケーリング(スケールアップ/スケールダウン)となる。
DynamoDBはトランザクションの概念がないため、マシンを分散することができる。
そのため、マシン台数を増やす水平スケーリング(スケールアウト/スケールイン)となる。
RDB、NoSQL以外のデータベースサービス
RDB、NoSQL以外にも利用目的に応じてデータベースサービスを使い分けることが大事である。
Amazon Redshift | ビッグデータの集計や分析に使われるデータウェアハウス。 |
Elastic Cache | インメモリキャッシュとして使われる。 RedisまたはMemcachedを選択できる。 Webアプリのセッション管理に利用したことがある。 |
Amazon Neptune | グラフデータベースサービス。 グラフクエリを使用するシーン、相関関係やルート検索などに使用する。 |
AWS DMS(Database Migraion Sevice)
オンプレ→AWS、AWS→AWSへのDBの移行をサポートするサービスとして、AWS DMSが用意されている。