CDP:Sharding Writeパターン

From AWS-CloudDesignPattern
Jump to: navigation, search

書き込みの効率化

Contents

解決したい課題

RDBMSの書き込みに対する高速化は非常に重要で、また難易度の高い問題である。スケールアップで実現できる以上のパフォーマンスを出すには、 当然、複数のデータベースサーバを利用することになるが、どのように実現するかは常に課題となっている。

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

複数データベースサーバでパフォーマンスを上げる方法として、書き込みを他の仮想サーバに分散する手法(シャーディング)が一般的な方法となっている。

基本的には、適切なテーブルのカラムをキーにして、指定したルールで、バックエンドのRDBMSの同じ構造のテーブルに分散して書きこむ形となる。

バックエンドのRDBMSとしてクラウドが提供するRDBMSサービスを用いることで、可用性が高く、また運用効率もよい状態でのシャーディングも可能となる。

実装

AWSにはRDSと呼ばれる可用性と運用効率の高いデータベースサービスが利用でき、シャーディングのバックエンドとして用いることで、 シャーディングの仕組み自体の可用性と運用効率も高めることが可能となる。

  • Spiderストレージエンジンが利用できるMySQLサーバなどシャーディングソフトウェアをAmazon EC2上にインストールする
  • 複数のRDBMSサービスを用意し、シャーディングのバックエンドとする。
  • バックエンドのRDBMSサービスを複数の地域に分散させることも可能。

構造

6wNg0ISJczU5Pz1m-37E3D.png

利点

  • シャーディングのバックエンドとしてRDS(Multi-AZ)を利用することで、高い可用性を実現できる。
  • バックエンドを複数の地域に分散することで、ワールドワイドなシステムの、各地域におけるパフォーマンス向上がはかれる。

注意点

  • バックエンドを複数の地域に分散する場合は、シャーディングソフトウェアと地域の通信は必要に応じて暗号化する必要がある。

寄贈したアーキテクト

Ninja of Three

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox