CDP:Temporary Tableパターン

提供:AWS-CloudDesignPattern
移動: 案内, 検索
寄贈したアーキテクト

データベースの一時利用

目次

解決したい課題

RDBMSは集計の処理などをするのに、非常に優れたデータベースです。 しかし、大量のデータを一気に書き込むような場合は、高負荷になり それに耐えうる高価なハードウェアや、ハイスペックなインスタンスを用いなければならない。 常に一定の高負荷であればよいが、負荷の状況にむらがある場合はコスト効率が非常に悪い。

クラウドでの解決/パターンの説明

  • 一時的に高負荷にも耐えられるサービスを利用し、データのバッファを作る。
  • バッファから一定の負荷でRDBMSに書き込む
  • 必要があれば、集計結果を書き込む
  • 読込の時にはReadReplicaなどを使う

実装

  • 書込データ(ログなどの情報)を一時的にSQSや、SimpleDB、DynamoDB、S3、CloudWatchに書き込む これらをTemporaryTableと呼ぶ
  • 定期的にこれらのTemporaryTableからデータを取り出し、RDSに格納しておく。
  • RDSに格納する際に、生のデータが必要ない場合は、ある程度の集計をして書き込むとさらに負荷低減につながり、RDSのコストは下がる
  • 定期的に動かす処理はScheduled Auto Scalingパターンを使うとさらに効率が良いことが多い。
  • RDSから情報を集計し、取り出す時にはReadReplicaを利用すると、さらに効率が良いことが多い。

構造

TemporaryTable.png

利点

高負荷に耐えうる安価なサービスを一時利用することで、RDSの負荷の平準化を図ることができ、ピークに合わせた費用をかけなくて済む。 集計しなからRDSに書込をすることで、負荷軽減すなわちインスタンスタイプを落とすことが出来る。 また、CloudWatchを利用することで、サービス側で集計も行うことができ、バッチ用EC2の負荷を落とす事ができ、更にコストを削減出来る。 ReadReplicaパターンと組み合わせる事で、読込時の負荷を考慮しなくて良くなるため、RDSのインスタンスタイプを極限まで下げることが出来る。

注意点

  • データの内容によっては利用できない可能性がある。バイナリデータ等
  • リアルタイム性の確保は実現出来ない。
  • データ量、集計粒度によっては、TemporaryTableからRDSに移すためのEC2コストの方が高く可能性もある。

その他

個人用ツール
名前空間
変種
操作
CDPメニュー
ツールボックス