CDP:Sharding Writeパターン
提供:AWS-CloudDesignPattern
書き込みの効率化
目次 |
解決したい課題
RDBMSの書き込みに対する高速化は非常に重要で、また難易度の高い問題である。スケールアップで実現できる以上のパフォーマンスを出すには、当然、複数のデータベースサーバーを利用することになるが、どのように実現するかは常に課題である。
クラウドでの解決/パターンの説明
複数のデータベースサーバーで書き込みパフォーマンスを上げる方法に「シャーディング」がある。基本的には、同じ構造のデータベースを用意して適切なテーブルのカラムをキーにして分割し、書き込み処理を分散する。クラウドが提供するRDBMSサービスを用いれば、可用性が高く、運用効率もよいシャーディングが可能になる。
実装
AWSのRDBMSサービス「RDS」をシャーディングのバックエンドデータベースに用いれば、可用性と運用効率を高めることが可能となる。
- Spiderストレージエンジンを組み込んだMySQLサーバーなどのシャーディングソフトウェアを、EC2上にインストールする。
- 複数のRDSを用意し、シャーディングのバックエンドデータベースとする。
- RDSを複数の地域に分散させることも可能。
構造
利点
- シャーディングのバックエンドデータベースとしてRDS(Multi-AZ)を利用することで、高い可用性を実現できる。
- バックエンドデータベースを複数の地域に分散することで、ワールドワイドなシステムの各地域におけるパフォーマンス向上が図れる。
注意点
- バックエンドデータベースを複数の地域に分散する場合は、シャーディングソフトウエアとの通信を必要に応じて暗号化する必要がある。