3

我有一个独立的网络设备。它需要重新设计以作为这些设备的地理分布组的一部分。组中设备之间的同步不必频繁发生,不超过每小时一次。该应用程序是带有 SQLite 的 rails。

主要是,我们希望使在这些设备上收集的某些信息保持同步。由于部署的原因,添加大型数据库集群是不可行的。

我一直在考虑 CouchDB,因为复制和处理复制导致的冲突是它的强项。

您如何看待 CouchDB 作为一种保持分布式网络设备同步的机制?对于替代方法有什么想法或建议吗?

4

3 回答 3

2

具体问题是什么?

CouchDB 实现了主-主复制,这正是您所要求的。

或者?

于 2011-04-10T05:57:53.593 回答
2

CouchDB 非常适合这个,因为正如您所说,它具有主-主复制。由于您在 WAN 上进行复制,另一个重要的补充是 CouchDB 旨在优雅地处理网络的进出,这将是一个很好的容错功能。

很多人都在这种情况下使用过 CouchDB。看看一些案例研究 ( http://www.couchbase.com/customers/case-studies ) 和我最近写的一篇关于使用 CouchDB 保持前端服务器会话数据同步的博客文章 ( weblog.bocoup.com/存储-php-sessions-in-couchdb)。

此外,如果您发布有关您的案例的更多信息,这将有所帮助,以便我们可以帮助满足我们的答案。

干杯。

于 2011-04-11T22:46:22.793 回答
2

CouchDB 很好。您可能有一些 Unix 工具的替代品。

最简单的键/值数据库是文件系统中的文件。他们工作得很好。如果您只需要带有基本复制的键/值存储,那么 rsync 可以做到这一点。例如,如果您的冲突解决策略始终采用最新的时间戳数据,那么您可能会使用 rsync。

首先,您可能正在运行 Unix/Linux。与 CouchDB 不同,将包括 SSH 和 rsync。

rsync(实际上是它的 SSH 隧道)的另一个优点当然是识别、身份验证和授权。您的设备可能是 Unix/Linux,并且有上百万种连接 Unix 授权的方法。这不是保证,但几乎任何事情都是可行的:密码文件、NIS、LDAP、Kerberos、Samba/Active Directory。名单还在继续。

使用 Couch,您将不得不找出某种用户管理系统。

  • 你会使用oauth吗?
  • 您是否必须编写身份验证插件?
  • 你还会复制_users数据库吗?_users数据库中的冲突怎么办?
  • 你有一个中央_users数据库吗?如果您没有中央数据库,您如何拥有中央用户数据库

Couch 和 MySQL 一样,是一个成熟的服务器。它将维护负载,而 rsync 不会。

  • 请记住压缩数据库、压缩视图并运行视图清理
  • 记得轮换日志文件
  • 可能备份您的 .couch 文件和.ini配置

换句话说,你能做一个快速而肮脏的 rsync hack,还是你需要完整的 Couch 包?

CouchDB 是一个统一、一致的平台,与操作系统无关。这可能是好是坏。不知道你的具体情况,我猜想 rsync over SSH 是最好的短期,但 Couch 是最好的长期。(但有这么多软件项目,长期似乎永远不会到来。)

于 2011-04-12T07:36:12.253 回答