← 返回列表

オフライン同期設計:弱网市场的离线优先与冲突解决

2026/9/20

背景与问题

弱网市场(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 の欠点の大半が消える。

結論

  1. データ設計で衝突を消す:記録は「追記専用」(既存レコードを書き換えない)にすると、同期衝突が原理的に起きない——修正は「修正レコードの追記」として表現。
  2. 削除はフラグ:DELETE を即実行せず deleted=true のフラグ立て——同期順序の入れ替えで復活する事故を防ぐ。
  3. 同期はキュ一本:オフライン中の操作をローカル queue に積み、オンライン時に順次送信(opc-cron-design-minimum の job で再送)——冪等性(opc-client-retry-budget)とセット。
  4. 弱网市場でなければ不採用:日本/米市場向けの app はオフライン優先の複雑さを払う価値が薄い——この設計は弱网市場(c-nigeria-market 三门槛)に進む時だけ採用。

待办 / 下次继续

关联

c-nigeria-market c-pakistan-market opc-cron-design-minimum opc-client-retry-budget opc-db-migration-safety

オフライン同期設計:弱网市场的离线优先与冲突解决 · 我的站点