Amazon RDS
正式名称はAmazon Relational Database Service
。略称はRDS
。
いわゆるリレーショナルデータベースのAmazon版みたいなやつ。MySQLやPosgreSQLも使えるが、個人の興味としてはAmazon Aurora
も使ってみたい。たぶんなんでもかんでもAmazonがやってくれる便利なデーターベースなんだろうまだ詳しくは知らんけど。
ストレージタイプ
RDSのデータ保存用ストレージにはEBS
を使います。尚且つ、EBSで利用可能なストレージタイプは以下となります。
-
汎用SSD
-
プロビジョンドIOPS SSD
-
マグネティック
拡張はオンラインでも可能だが、パフォーマンスは落ちる。
マルチAZ構成
RDSは、DBインスタンス作成時にマルチAZ構成を選択するだけで、AWSがすべて自動でDBの冗長化に必要な環境を作成してくれます。
AZ
とはなにかというと、アベイラビリティゾーン(AZ)
のことです。一つのリージョンのなかに、このアベイラビリティゾーンが2以上あります。
2以上、アベイラビリティゾーンがある理由はズバリ故障に備えた設計にしているからです(Design for Failure)。災害などで一つのアベイラビリティゾーンが動かなくなってしまったとしても、もう一つのアベイラビリティゾーンがそれをカバーしてくれるので、障害に強い。
そんなアベイラビリティゾーンが複数ある = マルチにある = マルチAZ構成ってな感じで覚えておけばいい。
ただ、この便利なRDSのマルチAZ構成にもデメリットある。
-
書き込み速度が遅くなる
- 2つのAZ間でデータを同期するため、シングルAZ構成よりも書き込みやコミットにかかる時間は長くなるため。
-
フェイルオーバーには時間がかかる
- 障害が発生した場合、IPアドレスの書き換え待ちが発生するため。
リードレプリカ
リードレプリカ
とは、通常のRDSとは別に、参照専用のDBインスタンスを作成することができるサービス。英語だとRead Replica
なので、わりかし覚えやすい。
マスターとリードレプリカのデータ同期は、非同期レプリケーション方式のため、タイミングによってはマスターの更新がリードレプリカに反映されてないことがある。しかし、マルチAZ構成とは違い、マスターDBのパフォーマンスに影響を与えることはほぼありません。
バックアップとリストア
-
自動バックアップ
- 1日に1回自動的にバックアップ(DBスナップショット)を取得してくれる機能。バックアップからDBを復旧する場合は、取得したスナップショットを選択して新規RDSを作成します。
-
手動スナップショット
- 任意のタイミングでRDBのバックアップ(DBスナップショット)を取得できる機能。
-
データのリストア
- スナップショット一覧から戻したいスナップショットを選択するだけでデータをリストアできます。
-
ポイントインタイムリカバリー
- 直近5分前から最大35日前までの任意のタイミングの状態でRDSを新規に作成できるサービス。
セキュリティ
-
ネットワークセキュリティ
- SSLを使った暗号化にも対応している。
-
データ暗号化
- ストレージ、スナップショット、ログなどのRDSに関連するデータが暗号化された状態で保持されます。データ暗号化のオプションは途中から有効にすることができません。
Amazon Aurora
特徴
-
クラスタボリュームを作成時に容量を指定する必要がなく、自動的に拡縮します。
-
他のRDSと違いマルチAZ構成オプションはない。しかし参照用のレプリカインスタンスを作成できる。プライマリインスタンスに障害が発生した場合は、レプリカインスタンスがプライマリインスタンスに昇格する。
エンドポイント
Aurora作成時にクラスタエンドポイント、読み取りエンドポイント、インスタンスエンドポイントの3種類のエンドポイント(FQDN)が作成されます。
-
クラスタエンドポイント
- プライマリインスタンスに接続するためのエンドポイント。データベースに対して参照、作成、更新、削除、定義変更のすべての操作が可能。
-
読み取りエンドポイント
- レプリカインスタンスに接続するためのエンドポイントです。データベースに対しては参照のみを受けつけることができる。
-
インスタンスエンドポイント
- Auroraクラスタを構成する各DBインスタンスに接続するためのエンドポイント。接続したのがプライマリであればすべての操作が、レプリカインスタンスであれば参照が可。
-
カスタムエンドポイント
- 任意のデータベースにアクセスする場合に使う。負荷が高い処理に向いてる。
Redshift
Amazon Redshiftは、AWSが提供するデータウェアハウス向けのデータサービスです。データウェアハウス
とは何かというとデータの倉庫
ということらしい。データを時系列的に保存し、そのデータを活用できるようにすることができるデータサービス。
Redshift構成
Redshiftクラスタ、リーダーノード、コンピュータノードから構成される。複数のコンピュータノードをまたがずに処理が完結できる分散構成をいかに作れるかがRedshiftを使いこなすポイント。
-
Redshiftクラスタ
- 1つのRedshiftを構成する複数のノードのまとまり
-
リーダーノード
- リーダーノードは各クラスタに1台のみ存在し、名前の通り司令塔的な役割をはたす。
-
コンピュータノード
- リーダーノードから命令を受け実行クエリを処理するノード。
-
ノードスライス
- Redshiftが分散並行処理をする最小の単位。
Redshiftの特徴
-
列指向型(カラムナ)データベース
-
多くの圧縮エンコード方式への対応
-
ゾーンマップ
-
柔軟な拡張性
-
ワークロードの管理機能
-
Redshift Spectrum
DynamoDB
拡張性に非常に優れたKey-Value型のデータベース。個人的にも注目していてサービス面で手間がかからないというのは魅力的。
DynamoDBの特徴
-
高可用性設計
-
スループットキャパシティ
- スループットキャパシティつまり処理能力のこと。変更は自動スケーリングされる。
-
データパーティショニング
- データをパーティションという単位で分散保存する。
-
期限切れデータの自動メンテナンス(Time to Live, TTL)
-
DynamoDB Streams
-
強い一貫性を持った参照(Consistent Read)
- Key-Value型のデータベースの使い方の本質ではないため、場合によってはRDBへの変更も検討したほうがいい。
-
DynamoDB Accelerator(DAX)
- DynamoDBの前段にキャッシュクラスタを構成する拡張サービス。
プライマリキーとインデックス
まだDynamoDBの設計はしたことがないけど、ここが一番重要。
-
プライマリキー
- データ項目を一意に特定するための属性。インデックスとしても利用される。
DynamoDBには、他にローカルセカンダリインデックとグローバルセカンダリインデックスがあるが、Key-Value型のデータベースの使い方の本質ではないため、場合によってはRDBへの変更も検討したほうがいい。
ElastiCache
AWSが提供するインメモリ型データベースサービス。AWSアーキテクトくらいの資格だと、このElastiCache
はインメモリ型データベースサービス
ということだけ覚えておけばいいと思う。
インメモリ型データベースサービスとは何かというと
インメモリデータベースとは、専用データベースの一種です。データをディスクや SSD に保存するデータベースではなく、データストレージ用のメモリに主に依存します。インメモリデータベースは、ディスクにアクセスする必要性を除くことによって、最小限の応答時間を達成するよう設計されました。 すべてのデータはメインメモリにのみ保存および管理されているので、処理やサーバー障害によって失われてしまうリスクがあります。インメモリデータベースは、すべてのオペレーションをログに保存したりスナップショットを取得したりすることで、データを存続することができます。
インメモリデータベースは、ゲームリーダーボード、セッションストア、リアルタイム分析などの、マイクロ秒の応答時間が必要でいつでもトラフィックが急増する可能性があるアプリケーションに最適です。
インメモリデータベースとは何ですか?
相変わらず専門用語たっぷりで意味不だけど要はSSDとかを使わず、メモリに依存してるからその分、早いということ。
Amazon EMR
Apache HadoopやApache Spark などのビッグデータフレームワークとして、大量のデータを処理および分析するマネージド型クラスタープラットフォーム。
ビックデータとうい言葉を見たらAmazon EMR
ねくらいの感覚でまだいい。
Amazon Athena
Amazon Athenaはインタラクティブなクエリサービスで、AmazonS3内のデータを標準SQLを使用して簡単に分析できます。
Athena
自体はサーバーレスなのでインフラストラクチャの管理は不要。
s3
やsql、クエリ
とうい言葉を見たらAmazon Athena
ねくらいの感覚でまだいい。
参考にした本
AWSはドキュメントも揃っているので、本もなくても大丈夫だと思いますが、やっぱり試験勉強となるとどこでも開ける紙の本は便利なので対策本は買っておいて損はないです。