[レポート] AWSデータベース入門 #AWSSummit
当エントリでは2018年5月31日に行われた『AWSデータベース入門』に関する内容をレポートしたいと思います。
当セッションの登壇者及び概要は以下の通りです。
片岡 光康
アマゾン ウェブ サービス ジャパン株式会社
技術統括本部 ソリューションアーキテクト
AWS でシステムを構築したいけど、どんなデータベースサービスがあるのか知らない。また、マネージド型のデータベースサービスを利用するとどの様なメリットが あるのか知りたい。本セッションでは AWS で提供されているデータベースサービスとその特徴、メリットなどをご紹介します。
セッションレポート
AWSのデータベースサービス
- relational
- RDS
- Redshift
- Non-Relational
- DynamoDB
- ElastiCache
- Neptune
- Migration
- DMS
- どれを使えばいい?
RDS
- RDSについて
- フルマネージドなリレーショナルDBサービス
- シンプルかつ迅速にスケール
- プラットフォーム
- Oracle
- SQL Server
- MySQL
- PostgreSQL
- etc...
- フルマネージドによる運用負荷の低減
- オンプレミス vs EC2
- ハードウェアメンテナンスがない
- OSインストールが不要
- EC2 vs RDS
- ミドルウェアインストールが不要
- HA構成の検討がない
- バックアップをRDSサービスとして用意
- オンプレミス vs EC2
- DBAが重要な作業に注力
- アプリケーションのチューニング
- 提供されるメトリクスからボトルネックの特定、解消
- 新施策に向けた検証など
- Amazon RDSのユースケース例
- トランザクション
- 複合クエリ処理
- DBサイズが16TB未満
- シングルノードで処理可能(リードレプリカでの対応)
Aurora
- ハイパフォーマンス
- 5x faster than RDS MySQL 5.6 & 5.7
- Read/Write ともに高いスループット
- 5x faster than RDS MySQL 5.6 & 5.7
- インスタンスサイズによるスケール
- インスタンスサイズに応じて、スループットがスケールする
- 通常のRDSだと頭打ちにになる
- インスタンスサイズに応じて、スループットがスケールする
- アーキテクチャ
- ログとストレージレイヤの分離
- S3でストリーミングバックアップ
- キャッシュレイヤの分離
- プロセス外にキャッシュを移動
- DBプロセスが死んでも問題なくリスタートできる
- プロセス外にキャッシュを移動
- ストレージ
- AZにストレージを分散
- リードレプリカもマスタも同じストレージ
- 自動で再ストライピング、ミラー修復、ホットスポット管理、暗号化
- ログとストレージレイヤの分離
- ユースケース
- トランザクション
- ワークロードが高い処理
Redshift
- クラウド上のDWH
- ハイパフォーマンス
- PostgreSQL互換
- 多くのBIツールが対応
- スケールアウトの鍵
- MPP
- 複数のノードで分散して実行
- リーダノードがコンピュートノードにタスクを振り分ける
- ノードを追加すればスケールアウト
- 複数のノードで分散して実行
- シェアードナッシング
- ディスクをノードで共有しない
- MPP
- IO削減
- 列指向
- データ分析では列単位で集計を行うことが多い
- 圧縮アルゴリズム
- 列ごとに類似のデータなので、圧縮率が高い
- エンコード方式は列ごとに選択可能
- ゾーンマップ
- ブロック単位でデータを格納
- 不要なデータ読み込みをスキップ
- ブロック単位でデータを格納
- 列指向
- フルマネージド
- 運用機能
- データ更新・挿入
- S3, DynamoDBからの高速な並列ロード
- バックアップ
- S3へ差分保管
- 自動バックアップ
- データ更新・挿入
- 運用機能
- ユースケース
- DWH, 分析
- バッチによる大量更新
- 大規模データ(ペタバイト)
DynamoDB
- 特徴
- マネージドNoSQL
- ハイスケーラブル
- プロビジョンドスループット
- 必要な分だけスループットを割り当て
- ストレージの容量制限なし
- DAXで高速化
- TTLでデータのライフサイクル設定
- ユースケース
- key-value
- 高速なパフォーマンス
- スケーラブル
ElastiCashe
- 特徴
- 超高速なエンジン
- redis, memcachedをサポート
- フルマネージド
- 高可用性
- 超高速なエンジン
- ユースケース
- キャッシング
- pub/sub
- セッションストア
Amazon Neptune
- 特徴
- グラフDB
- フルマネージド
- 高可用性
- Gremlin, SPARQLをサポート
- ユースケース
- ソーシャルネットワーキング
- 不正検出
どれを使えばいい?
- トランザクション処理、複合クエリ処理が必要ならRelational Database
- 汎用用途ならRDS
- パフォーマンス、耐障害性ならAurora
- 利用コスト、開発者の習熟度、既存システムとの互換性ならその他のRDS
- 大容量、分析ならRedshift
- 汎用用途ならRDS
- トランザクション処理、複合クエリ処理が不要ならNon-Relational Database
- レプリケーションならDynamoDB
- インメモリ、低レイテンシならElastiCache
- グラフDBならNeptune
おわりに
AWSで利用できる様々なDBサービスについて、その特徴を踏まえて何を選ぶかをまとめた発表でした。個人的には新しく出たグラフDBが気になります。