データレプリケーションにおけるインスタンス間でのバージョンの差異に対する対処法

2024-01-07

問題

Eventual Consistentな分散レプリケーションのインスタンスが複数存在するケースを考える。
データはSQLiteに保存している。
すべてのインスタンスがフィールドaとbを持つデータ構造を持っている。
ある日、フィールドcを追加するアップデートがリリースされ、そのリリースが特定の1インスタンスのみにに適用されたとする。
フィールドcを持つデータがそのインスタンスに追加されると、それらはレプリケーションのために他のインスタンスに送信される。
他のインスタンスはまだそのリリースを受け取っておらずフィールドcに対応するカラムがSQLiteに存在しないため、フィールドcが保存できない。

解決策

所感

仮想カラム使えばバージョンによらず最新のデータ構造を保存しつつ、古いバージョンを使い続けることができる。 ただ、仮想カラムの保存と計算のオーバーヘッドが懸念として残る。