8
The Two ID Problem (tech.trello.com)
Kros 積分 3
如果 App 有 Offline 功能時,如何讓 Local ID 跟 Server ID 互相溝通,Trello 一開始想到兩個不好的解法:
  1. 先產生 Local ID,等連線成功時,再轉換成 Server ID。

複雜且效能不好

  1. 產生一個 ID Object "Identifier" 同時包含 Local ID, Server ID。

架構大改 Refactoring 風險大

目前的解法是: 在 network 層實作一個 local-server id converter。缺點就是 data model 必須是 mutable 的。

大家有什麼好的解法嘛?

IngramChen 積分 2

這個問題做 messager 的大概都會遇到。

如果 id 沒用來排序的話,那就用 type 4 UUID 來解,client/server 都能自由產生 unique id,這樣問題就少很多。

不過很多資料都有時序,而某些資料庫也真的只能用 primary key 來排序 (ex. Cassandra) ,那這時候就很痛苦了。這篇提到的前兩種做法我個人都用過,可以解但真的挺痛苦的。

他最後的方法是全 id 轉換,這… 雖然他們說可行,但我想到要 debug client side 的資料時,全部都要轉成 server id 才能和 server 核對做 debug... 這是另一種層面的痛苦呀