本文へスキップ
BecomeCoder

AWS SAP(ソリューションアーキテクト プロフェッショナル)コース · 第6章 新規ソリューションの設計②:データストアとデータベース · レッスン30

目的別データベースの選択

導入

「とりあえずRDS」で済んでいた小規模システムと違い、SAPでは扱うデータの形・アクセスパターンに応じて複数のデータベースを使い分ける発想(Purpose-built Database、目的別データベース)が問われます。

説明

AWSは「1つの万能データベース」ではなく、データの性質ごとに最適化された複数のマネージドデータベースを提供しています。

データベースデータの形得意なアクセスパターン
RDS / Auroraリレーショナル(表・JOIN複雑なクエリ、強いトランザクション整合性
DynamoDBキーバリュー / ドキュメント主キーでの超高速な読み書き、予測可能なレイテンシ
ElastiCacheインメモリのキーバリューミリ秒未満の読み取り、セッション/キャッシュ
Amazon Neptuneグラフ関係性の探索(友人の友人、レコメンド)
Amazon DocumentDBドキュメント(MongoDB互換)柔軟なスキーマのJSONドキュメント管理
Amazon Timestream時系列IoTセンサーやメトリクスの時系列データ蓄積・分析
flowchart TD
    Q["どんなデータで、<br/>どうアクセスされるか?"] --> R["表とJOINで<br/>複雑な問い合わせ"]
    Q --> D["主キーで<br/>高速な読み書き"]
    Q --> C["1ミリ秒未満の<br/>キャッシュ"]
    Q --> N["「つながり」を<br/>たどる問い合わせ"]
    Q --> T["時刻順に増え続ける<br/>センサーデータ"]
    R --> RDS["RDS / Aurora"]
    D --> DDB["DynamoDB"]
    C --> EC["ElastiCache"]
    N --> NEP["Neptune"]
    T --> TS["Timestream"]

SAPの設問では、「注文とその明細をJOINして集計したい」ならリレーショナル、「ユーザーIDだけで爆速に1件取得したい」ならDynamoDB、というように問い合わせの形そのものからデータベースを逆引きさせる出題が多く見られます。1つのシステムの中で複数のデータベースを使い分ける「Polyglot Persistence(複数データベースの併用)」も設計として自然な選択です。

読んでみよう

「なぜRDSではなくDynamoDBなのか」を機能の丸暗記でなく、**アクセスパターン(JOINが要るか、主キー一発で引けるか)**から説明できるようにしておくことが重要です。次のレッスンからは、まずリレーショナル側の代表であるAuroraのスケール手法を見ていきます。