Schema evolution
無停止でデータベースのスキーマを変更する方法
現代では、以下の手段が用いられることが多い。
ダブルリード
ダブルライト
CDC
事例
オンラインで Cloud SQL などから Spanner へ移行する際、アプリ側で Dual Write を実装して旧・新 DB を同期。
失敗書き込みのリペア工数とスロットリング設計が必須と強調。
キャッシュ系ストアと検索インデックスを 二重書き込み で合わせつつ、定期リペアルーチンで“不整合”を自動修復。デュアルライト時の冪等性を最重要視。
リレーショナル→NoSQL の段階移行で Dual Write を採用。バックフィル後にトグルを切り替え、ダウンタイムなしを実現。
Write Twice, Read Old → Back-fill → Read New → Drop Old の 4 ステップ
Dual Read / Dual Write / 両者併用の長所短所を比較。
Dual Write を “Gray Switch(段階切替え)” と対比し、整合性要求とレイテンシ負荷で選択基準を提示。
「ダブルライト期間は意外と長くなる」「ダブルリードのほうがコード負荷は小さい」
判断基準
https://gyazo.com/f41316947d9e3c4e1f4ddd816c5a1588