使用TouchDB iOS,我们有一个iOS应用程序,它有一个本地CouchDB文档存储,可以复制到云计算的CouchDB服务器。我们有几个用户在运行这个应用程序,结果产生了一堆TouchDB数据库副本。
当我们开始使用这个应用程序时,我们还是CouchDB的新手(现在仍然是)。我们设计了一个关系,使类型a的文档具有一个属性,即:这是一个描述逗号分隔的id列表的字符串,这些id是类型B的文档。
因此,以雇员/雇主为例
Employer
拥有一处名为
employeeIds
这将是“1,7,8,10”。如果员工10退出,此列表将更新为“1,7,8”。
问题是,当在应用程序的另一个实例上,比如在另一部手机上,员工7会退出列表,是否会更新为“1,8,10”,从而在复制时引发冲突。
所以我们认为一个更好的想法是
employerId
在
Employee
文档属性。如果一个员工辞职,我们就把他的
员工ID
清空。这样的冲突会少很多,对吧?
我现在面临的问题是,有多个应用程序,我如何将所有CouchDB数据库从第一个设计迁移到第二个设计。
我需要退役所有旧的应用程序吗?还是有一种防故障的方法可以将所有应用程序迁移到新的设计中,而不会破坏现有的应用程序,同时最大限度地减少冲突?我应该如何最好地处理这个案子?