okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

データモデリングの実践ガイドとAWS

AWSにおけるデータモデリングの実践ガイド

AWSAmazon Web Services)におけるデータモデリングとは、クラウド上で提供される様々なデータベース・分析・ストレージサービスを活用して、ビジネスニーズに応じた柔軟かつスケーラブルなデータ構造を設計することである。

オンプレミス時代とは異なり、ストレージコスト・性能・拡張性・レイテンシ・アクセス頻度・用途(取引 vs 分析)など、複数の観点を踏まえたアーキテクチャ選定とモデリングが重要となる。


1. AWSの主要なデータ関連サービス

  • RDS(Relational Database Service)MySQL, PostgreSQL, Oracle, SQL Server などのマネージドRDBMS
  • Amazon Aurora:RDS互換の高性能データベース(PostgreSQL/MySQL
  • DynamoDB:スケーラブルなNoSQLキーバリューストア。サーバーレスでミリ秒応答
  • Amazon Redshift:大規模な分析処理に最適なDWHサービス
  • Amazon S3:構造化・非構造化を問わず、あらゆるデータを格納するストレージ
  • AWS Glue:ETL/データカタログ/スキーマ管理
  • Athena:S3に保存されたデータに対してSQLクエリを実行

2. モデリングの選定軸と考え方

AWSでは「すべてを1つのDBにまとめる」設計ではなく、用途別・アクセス頻度別・可用性別に設計分離するのが前提となる。

  • トランザクション向き:Aurora / RDS
  • 超低レイテンシな処理:DynamoDB(キャッシュはElastiCache)
  • 分析向け:Redshift、Athena、S3+Glueパイプライン
  • センサーデータやログ系:S3+Kinesis Firehose、Glue Table、Athena
  • マスタ系:RDS + DMSでRedshift連携

例えばECサイトでは、商品情報やユーザー情報はAuroraで管理し、注文履歴やアクセスログはDynamoDBとS3で処理。定期的にGlueで整形・ETLし、RedshiftやAthenaで分析する。


3. 各サービスにおけるモデリング実践例

  1. DynamoDBモデリング

    • パーティションキーとソートキーを活用してリレーションを疑似的に表現
    • 非正規化とアクセスパターン駆動設計が原則
    • GSI(Global Secondary Index)で柔軟な検索パターンを確保
  2. Redshiftモデリング

  3. S3+Glue+Athena モデル

    • 生データはS3に保存(形式はParquet推奨)
    • Glueでデータカタログ管理とスキーマ定義
    • AthenaでSQLによる軽量分析とLooker/Tableau連携

4. データ統合とETLパターン

  • Glueジョブ:SparkベースでスケーラブルにETL
  • Lambda + Step Functions:イベント駆動型ETL処理
  • DMS(Database Migration Service):RDSやオンプレDBをRedshift/S3へ複製
  • Kinesis Firehose:リアルタイムデータをS3やRedshiftへストリーミング挿入

SaaS企業では、全ユーザーのアクションログをKinesis経由でS3に保管し、Glueで日次集計処理後、Athenaを用いて月次レポート作成とBI連携を行っている。


5. 実用事例:モダン分析基盤の構築

  • マスタデータ:Aurora PostgreSQLで管理
  • 取引データ:DynamoDBにてリアルタイム処理
  • ログ・履歴:S3にParquet形式で保存
  • ETL:Glue + Step Functions + Lambda
  • 分析:Athena, Redshift, QuickSightで可視化

ある小売業では、在庫の変動をDynamoDBで記録し、1時間ごとにGlueがS3に転送。Redshiftで集計された在庫残量をQuickSightで店舗別に可視化し、機械学習による補充提案へとつなげている。


まとめ

AWSにおけるデータモデリングは「単なるテーブル設計」ではなく、ストレージ階層、アクセス設計、可用性設計、データ処理アーキテクチャすべてを統合的に考慮した“クラウド時代の情報設計”である。

データのライフサイクル、リアルタイム vs バッチ、非構造化 vs 構造化、分析 vs 取引という多様な軸を理解し、複数サービスを適材適所に組み合わせる設計力が求められる。

そしてAWSの強みは「選択肢の多さ」ではなく、「最適な道を選べる自由」にある。