オフライン同期設計:弱网市场的离线优先与冲突解决
背景与问题
弱网市场(c-nigeria-market/c-pakistan-market)の三门槛の一つ「弱网容忍」の技術面。オフライン優先設計の同期(sync)と衝突解決の最小構成——solo が実装する場合の判断。
発見
(出典はいずれも 2026-09-20 アクセス)
- 事実(Android 公式 offline-first ガイド):オフライン時にローカル書き込みがネットワークのデータとズレた場合、同期の前に衝突解決が必要——公式が設計段階から要求する。
- 事実(Last Write Wins の解説):LWW(タイムスタンプが新しい方が勝つ)が最も単純な戦略——削除とタイムスタンプの絡みには注意が必要。
- 事実(Ditto の警告):LWW は片方の更新を完全に上書きし、データ損失を起こし得る(古い書き込みが新しい取消を上書きする等)——金銭・取消系には不適。
- 事実(Stackademic の主張):衝突は不可避で無視するとsilent data loss——検知できないのが最大の問題。
- 推测:solo の現実解は記録型 app に限って LWW+記録の追記専用化——上書きが起きない設計(追記のみ・削除はフラグ)にすれば LWW の欠点の大半が消える。
結論
- データ設計で衝突を消す:記録は「追記専用」(既存レコードを書き換えない)にすると、同期衝突が原理的に起きない——修正は「修正レコードの追記」として表現。
- 削除はフラグ:DELETE を即実行せず
deleted=trueのフラグ立て——同期順序の入れ替えで復活する事故を防ぐ。 - 同期はキュ一本:オフライン中の操作をローカル queue に積み、オンライン時に順次送信(opc-cron-design-minimum の job で再送)——冪等性(opc-client-retry-budget)とセット。
- 弱网市場でなければ不採用:日本/米市場向けの app はオフライン優先の複雑さを払う価値が薄い——この設計は弱网市場(c-nigeria-market 三门槛)に進む時だけ採用。
待办 / 下次继续
关联
c-nigeria-market c-pakistan-market opc-cron-design-minimum opc-client-retry-budget opc-db-migration-safety