我有一个独立的网络设备。它需要重新设计以作为这些设备的地理分布组的一部分。组中设备之间的同步不必频繁发生,不超过每小时一次。该应用程序是带有 SQLite 的 rails。
主要是,我们希望使在这些设备上收集的某些信息保持同步。由于部署的原因,添加大型数据库集群是不可行的。
我一直在考虑 CouchDB,因为复制和处理复制导致的冲突是它的强项。
您如何看待 CouchDB 作为一种保持分布式网络设备同步的机制?对于替代方法有什么想法或建议吗?
具体问题是什么?
CouchDB 实现了主-主复制,这正是您所要求的。
或者?
CouchDB 非常适合这个,因为正如您所说,它具有主-主复制。由于您在 WAN 上进行复制,另一个重要的补充是 CouchDB 旨在优雅地处理网络的进出,这将是一个很好的容错功能。
很多人都在这种情况下使用过 CouchDB。看看一些案例研究 ( http://www.couchbase.com/customers/case-studies ) 和我最近写的一篇关于使用 CouchDB 保持前端服务器会话数据同步的博客文章 ( weblog.bocoup.com/存储-php-sessions-in-couchdb)。
此外,如果您发布有关您的案例的更多信息,这将有所帮助,以便我们可以帮助满足我们的答案。
干杯。
CouchDB 很好。您可能有一些 Unix 工具的替代品。
最简单的键/值数据库是文件系统中的文件。他们工作得很好。如果您只需要带有基本复制的键/值存储,那么 rsync 可以做到这一点。例如,如果您的冲突解决策略始终采用最新的时间戳数据,那么您可能会使用 rsync。
首先,您可能正在运行 Unix/Linux。与 CouchDB 不同,将包括 SSH 和 rsync。
rsync(实际上是它的 SSH 隧道)的另一个优点当然是识别、身份验证和授权。您的设备可能是 Unix/Linux,并且有上百万种连接 Unix 授权的方法。这不是保证,但几乎任何事情都是可行的:密码文件、NIS、LDAP、Kerberos、Samba/Active Directory。名单还在继续。
使用 Couch,您将不得不找出某种用户管理系统。
_users
数据库吗?_users
数据库中的冲突怎么办?_users
数据库吗?如果您没有中央数据库,您如何拥有中央用户数据库?Couch 和 MySQL 一样,是一个成熟的服务器。它将维护负载,而 rsync 不会。
.ini
配置换句话说,你能做一个快速而肮脏的 rsync hack,还是你需要完整的 Couch 包?
CouchDB 是一个统一、一致的平台,与操作系统无关。这可能是好是坏。不知道你的具体情况,我猜想 rsync over SSH 是最好的短期,但 Couch 是最好的长期。(但有这么多软件项目,长期似乎永远不会到来。)