データベースサービス
AWSのデータベースの特徴
通常業務で利用するデータベース(以下DB)サーバーを設計/構築/運用する際には次の作業が必要になる
- DBサーバー用のハードウェアの要件定義
- ハードウェアの調達/DBのインストール
- 構築時/運用開始後のパッチ適用
- DBのバックアップ/リストア設計と実作業
- DR対策
AWSのマネージド型DBサービスは上記の作業をAWSに任せることができる
◉マネージド型DBサービスの特徴
- 最初からDBがインストールされている
- DBサーバーが動作しているOS/DBソフトウェアのパッチ適用はAWSが行う
- 自動バックアップが可能
- DBのスケールアップ/スケールアウトはAWSの機能を利用できる
Amazon Relational Database Service(RDS)
- マネージド型のリレーショナルDBサービス
- ACID特性を備えていないといけない
特性 | 説明 |
---|---|
Atomicity(原子性) | トランザクション(データ処理)は全て正常に実行 or 無効のどちらか |
Consistency(一貫性) | DBに書き込まれたデータが定義されている全てのルールと制約に従っているか |
Isolation(独立性) | 各トランザクションが独立し、並行処理していること |
Durability(耐久性) | トランザクションの正常完了後、DBに加えられた全ての変更が永続的な状態であること |
◎サポートしているエンジン
- Amazon Aurora
- Postgre SQL
- MySQL
- MariaDB
- Oracle DataBase
- Microsoft SQL Server
◉Amazon Aurora
- Amazon独自のリレーションDBサービス
- Postgre SQL/MySQLと互換性があり、比較して性能も良い
- SQL処理を行うDBインスタンスとデータを格納するクラスターボリュームに分かれている
- クラスターボリュームは3ヶ所のAZに存在する
- 3つのAZのうちひとつのDBインスタンスはプライマリDBインスタンスと呼ばれ、データの読み取り/書き込みを行う
- その他2つのDBインスタンスはAuroraレプリカと呼ばれ、データの読み込みを行う
合計で3つのAZの6ヶ所に保存されるため、障害発生時にダウンタイムが発生することがほとんどない
◉RDSの特徴
◎パッチ適用の管理負荷軽減
曜日/時間帯を時間帯をメンテナンスウィンドウから指定することで、AWSが自動でパッチ適用する
◎バックアップとリストア
- 標準で1日1回自動バックアップが実施され、DBとトランサクションログを取得
- トランザクションログは5分ごとにS3に保存されている
- DBのバックアップはストレージボリュームのスナップショットを作成し、DBインスタンス全体を取得
- 最大35日分を保存することができる
RDSの復元方法
復元すると新しくインスタンスを作成/起動することになるため、アプリケーション側で新しいエンドポイント(ホスト名)に接続するように修正しなければいけない
◉マルチAZ
- RDSを複数のAZに構築すること
- Aurora以外のRDSのDBはマルチAZのDBインスタンスを作成すると、マスターDBインスタンスを自動作成して異なるAZにあるDBインスタンスにデータを複製する
- 耐久性と可用性が向上する
・シングルAZはDBに障害が発生した時、バックアップを利用して復元する必要がある
・マルチAZはスタンバイDBへの切り替えが自動で開始するため、データの損失がほぼない
◉リードレプリカ
- マスターDBと同じDBを複製し、読み取り専用として構築したもの
- マルチAZや異なるリージョン間で構築できる
- マスターDBとの同期処理は非同期で実行される
マスターDBとリードレプリカの構成にすることで、読み取り要求と書き込み要求の処理を分離でき、パフォーマンスと耐久性が向上する
◉Aurora Serverless
- 通常のAuroraと異なり、常にDBインスタンスが起動しているわけではなく、SQLのリクエストを受け取ってからインスタンスが起動する
- 負荷に応じて、DBインスタンスを自動でスケールする
利用頻度があまり高くないアプリケーション/負荷が一定ではないアプリケーションのデータ格納に適している
Amazon DynamoDB
- マネージド型のNoSQLデータベースサービス
- 構造化データ以外の半構造データ/非構造データを扱うことができる
データの分類 | データ構造の種類 | 詳細 | 説明 | データ/ファイルの例 |
---|---|---|---|---|
リレーショナルデータ | 構造化データ | データ管理する構造を決め、その構造に合わせて格納したデータ | 企業の基幹システムなどで管理されているデータ | RDB/Excel |
非リレーショナルデータ | 半構造データ | 非構造データを管理できる柔軟性のある構造を用意し、その構造に格納されたデータ | システムのログ/IoTデータ/位置情報/SNSデータ/設定ファイルなど | LOG/JSON/XML |
非リレーショナルデータ | 非構造データ | 構造が定義されておらず、データの関係をモデルに当てはめることができないデータ | テキストファイル(メモ書き)/音声データなど | TXT/MPEG |
◉キーバリュー型データモデル
- キーとバリューからデータが構成され、書き込むときはセットで保存される
- データを呼び出すときは、キーを指定してバリューを取り出す
◉マルチAZ
DynamoDBではデータは自動的に3ヶ所のAZに保存される
◉結果整合性モデル
- 書き込み処理を行なったデータは3ヶ所のAZに分散/保存されるが、書き込み完了に時間差がある
- タイミングによって、読み込んだデータに最新の情報が反映されていないAZからデータを取得してしまう場合がある
- Consistent Read(読み取り一貫性)というオプションで書き込みが反映された最新データを読み取ることができる
従来のリレーショナルデータはACID特性の中のConsistency(一貫性)を保証することができる
◉Amazon DynamoDBグローバルテーブル
- 複数リージョンに配置しているDBテーブルでデータの整合性をとるサービス
- DynamoDBのテーブル作成時に**共通の型(グローバルテーブル)**を選択し、複数リージョンに同一テーブルを作成する
全てのテーブルがマスターテーブルのため、どのリージョンのテーブルに対してデータを変更しても、他のリージョンのテーブルに対して同期が行われる
◉Amazon DynamoDBストリーム
- DynamoDBのテーブルに対して行われたデータ変更(追加/更新/削除)の履歴情報をイベントとして検出し、24時間保持する機能
- DynamoDBに負荷をかけずに別途集計/分析処理を行いたい場合
- データの変更発生時に迅速にシステム管理者にメール通知したい場合
結果整合性モデルのため、アプリケーション稼働中は常にDynamoDBに負荷がかかる
◉DynamoDBの課金
課金金額は、キャパシティモードと呼ばれる設定によって異なる
キャパシティモード | 説明 | 適したユースケース |
---|---|---|
オンデマンド | 課金は実行したデータの読み書きに対して発生/事前のパフォーマンスの予測や設定は不要 | ワークロードやトラフィックの予測がつかない |
プロビジョニング済み | 事前に1秒あたりの読み書きの回数を予測/Auto Scalingを使用してテーブルのキャパシティを自動調整する | DBにアクセスするトラフィックの予測ができる |
Amazon Redshift
- BIツールなどを利用した大量のデータの集計/分析に向いているデータウェアハウスサービス
- ノードと呼ばれているコンピューティングリソースの集合で構成されている
- リーダーノードが処理を受け付け、コンピュータノードに処理を依頼する
- ノードの集まりをクラスターという
BI(Business Intelligence)
経営上の意思決定に役立てる手法/技術
◉スナップショット
- Redshiftは、スナップショットを作成することでバックアップされる(ポイントインタイムバックアップ)
- 8時間ごと、もしくはノードあたり5GBのデータ変更があったときに自動バックアップ
- 自動取得したスナップショットの保存期間が過ぎると削除されるため、永続的にバックアップを保存したい場合は手動でスナップショットを取得する
◎クロスリージョンスナップショット
- スナップショットの格納先は標準でRedshiftのクラスターが配置されているリージョン
- 別にリージョンにコピーするように設定できる
- ひとつのリージョンに障害が発生しても、別のリージョンのスナップショットからクラスターを復元できる
Amazon ElastiCache
- インメモリDB(キャッシュ用のDB)
- 高スループットかつ低レイテンシーな処理が可能
◉一般的なWebDBアプリケーションの構成イメージ
データのアクセス時に常にDBに対するクエリが発生し、負荷がかかる
◉ElastiCacheの構成
DBサーバーの負荷軽減とパフォーマンス向上を実現できる
その他のDBサービス
◉Amazon Naptune
高速かつ信頼性の高いフルマネージドなグラフDBサービス
◎グラフDB
- NoSQLに分類される
- モノ同士のつながりを表現するネットワーク上のデータ構造
◎グラフの要素
- ノード:データの要素
- エッジ:ノード間の関係
- プロパティ:ノードとエッジの属性情報
人と人とのつながり(SNS)や乗換案内など、ノード間の関係性の表現や計算に適している
◉Amazon Athena
◉Amazon QuickSight
- フルマネージド型のBIサービス
- DBサービスのRDS/RedshiftやDB以外のS3/Athenaなとど連携してデータをダッシュボードで可視化することができる
- AWS以外の外部DBやファイルデータソースなどの可視化も可能
参考