同步应用程序

时间:2011-04-10 03:38:10

标签: mongodb redis couchdb riak nosql

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

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

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

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

3 个答案:

答案 0 :(得分:2)

具体问题是什么?

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

或者

答案 1 :(得分:2)

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

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

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

干杯。

答案 2 :(得分: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黑客攻击,还是需要完整的Couch包?

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