使用TouchDB-iOS,我們有一個iOS應用程序,該應用程序具有一個本地CouchDB文檔存儲庫,可將其複製到雲端CouchDB服務器。我們有幾個用戶運行這個應用程序,導致一堆TouchDB數據庫副本在那裏。在兩個CouchDB設計之間遷移
當我們開始使用該應用程序時,我們對CouchDB還是一個新手(我們仍然是)。我們設計了一種關係,以便A型文件有一個屬性說:這是一個字符串,用於描述類型爲B的文檔的以逗號分隔的ID列表。
因此,使用Employee/Employer示例那Employer
有一個名爲employeeIds
的屬性,它將是「1,7,8,10」。如果員工10將退出此列表將更新爲「1,7,8」。
問題是,當在應用程序的另一個實例上,在另一個電話上,比方說,員工7將退出列表將會更新爲「1,8,10」,導致複製時發生衝突。
所以我們想一個更好的主意是在Employee
文檔屬性中有一個employerId
。如果員工退出,我們只需將他的employerId
設置爲空。這樣會有很少的衝突,對吧?
我現在面臨的問題是有多個應用程序在那裏,我如何將所有CouchDB數據庫從第一個設計遷移到第二個設計。
是否需要退役所有舊應用程序或者是否存在故障安全的方式將所有應用程序遷移到新設計而不破壞現有應用程序並儘量減少衝突?我應該如何最好地處理這種情況?
你是否控制客戶?您是否可以強制用戶在給定時間內升級? –
是的,但我想保留這作爲最後的手段。 –