書き込みまたは読み取りをリーダー、読み取りをフォロワーで行われ、リーダーへの書き込みがフォロワーに伝播される仕組みをレプリケーションと呼ぶ。
レプリケーションの方法として
- ステートメントベース
- write-aheadログ 等がある。
ステートメントベースはSQLをそのまま転送する形になるため副作用を持つ関数が返す結果にズレが生じる方法で、MySQL5.1以前に採用されていた。
write-aheadログはPostgreSQL,Oracleで使用されているが、ログが低レベルに記述されているため詳細実装と密になってしまう。
その他レプリケーションのトポロジーとしていくつかのパターンがある
- マルチリーダーレプリケーション
- 複数のデータセンターにリーダーが存在する。リアルタイムの同時編集がイメージに近い。
- 書き込みの衝突があった際に最終的に同じ値に収束させるような方法が取られる
- リーダーレスレプリケーション
- AmazonがDynamoシステムで利用し流行しDynamoスタイルと呼ばれる。
- 一部のノードが何らかの理由で利用できなくてもクオラムによって読み取りあるいは書き込みの正当性を判断する