我一直在研究CouchDB和TouchDB,并认真考虑它们是否适合我心目中的移动应用程序。我有几个问题,如果有人能指出我正确的方向,我将不胜感激。场景是我在 TouchDB 上运行了 2 个移动客户端。我希望移动客户端 A 能够将特定文档复制到移动客户端 B。然后,我希望移动客户端 B 能够进行更改并将这些更改同步回移动客户端 A。从架构的角度来看,我认为我需要一个两个客户端都可以拉/推的集中式 couchdb 数据库。我遇到的问题是,如何确保客户 B 只能复制他有权复制的文档。我知道我可以使用复制过滤器来限制复制的文档,但我如何在移动客户端 B 上强制执行它?另外,上述情况的理想架构是什么?任何帮助将不胜感激。谢谢!
我在EC2(集中式数据库)中使用TouchDB和BigCouch进行了类似的设置。让推拉工作正确可能是一次冒险。=)
我认为您在使用带有拉动的复制过滤器方面走在正确的轨道上。如果您使用复制过滤器限制客户端 B 的拉取,您的生活很可能会更轻松,因为客户端 B 可以修改其本地 TouchDB 上的任何内容,并且不会造成任何伤害。
换句话说,不要复制您不希望客户端 B 修改的文档。
为此,您必须在文档中引入一个字段,该字段指定访问级别 - 或者某个数组中可能包含客户端 B 的用户 ID。这样他只能看到他有权看到的东西。
在我忘记之前有两点:a)Android上的TouchDB现在很粗略。 他们正在努力使其变得更好,但它落后于iOS版本。b) 我强烈建议您考虑在 Erlang 中编写复制过滤器。这样做让我的速度提高了 50%。