CouchDB能否用于桌面应用程序?

8
我希望有人能够验证或纠正我的结论。
我正在研究编写一个小的侧项目。我想创建一个桌面应用程序来记录笔记,它将与Web服务器同步,以便可以保持多个安装程序同步,并共享数据,如果必要,也可以通过浏览器访问。
我已经听到了关于CouchDB的一些噪音,听说过“离线功能”,desktop-couchdb以及利用其处理间歇性通信的能力来实现在移动市场中分布式应用程序的变化。这让我认为它可能是一个有趣的选择,可以提供我的数据存储和处理同步需求,但是在花费一些时间寻找如何入手的信息后,我的结论是我完全弄错了:
“没有办法将CouchDB实例打包,将其作为桌面应用程序的一部分分发并在该应用程序的上下文中运行,以提供本地存储和将数据同步到中央数据库。”
我的理解正确吗?如果是这样的话,是否有任何技术可以做到这一点,还是只能自己编写本地存储,可能仍然使用服务器上的CouchDB?

至少有一人决定回答是否定的:http://philwilson.org/blog/2009/04/couchdb-in-desktop-applications - RobertB
但是在Ubuntu上有一个名为desktopcouch的项目:https://launchpad.net/desktopcouch 目前看来它只支持*nix系统。更有趣的文档在这里:http://www.freedesktop.org/wiki/Specifications/desktopcouch - RobertB
1个回答

6
更新 (2012/05): 如果您的目标是Mac OS X 和/或 iOSAndroid,请查看来自 Couchbase 的新 TouchDB 项目。它们实际上在幕后使用 SQLite(至少目前如此),但可以复制到/从“真正的”CouchDB服务器。另一个客户端可选方案是 PouchDB,它在支持 IndexedDB 的浏览器引擎中运行,并且现在开始逐渐成熟。使用这些,或者将它们用于启发类似的移植到另一个桌面平台已经成为了一条更好的路径。

原始答案:

没有办法将 CouchDB 实例打包、作为桌面应用程序分发并在该应用程序的上下文中运行,以提供本地存储和与中央数据库的同步。

目前来看,你的说法基本正确,虽然可以将CouchDB包含在应用程序中,例如CouchDBX.app就是一个围绕CouchDB及其所有依赖项的前缀束的薄包装。

构建CouchDB应用程序的最简单方法是假设用户已经运行了CouchDB服务器。这比听起来容易得多,特别是使用Couchone的托管或类似于OS X上的CouchDBX或Ubuntu上的DesktopCouch的预构建应用程序。后者尤其有趣,因为如果我理解正确,现在Ubuntu默认情况下会包含它,并且当您通过D-Bus查询其端口时,会自动为每个用户旋转一个CouchDB服务器。类似的事情也可以(并且应该)使用launchd和Bonjour在OS X上完成。

因此,当您编写代码时,您可以设计您的应用程序以将数据存储在本地格式中,并可选择与您提供的CouchDB服务同步,或者您需要 构建 并捆绑所有Erlang、SpiderMonkey和CouchDB,以及一些脚本,以确保在需要时运行。这是可能的,但显然这两种方法都不理想,相信我,您不是唯一希望为面向桌面的应用程序找到更简单的解决方案的人!


感谢您的回答(以及评论者的意见)。我曾经想象过一个类似SQLite本地存储和库的东西,可以告诉它有一个远程的CouchDB实例。哦,也许将来会有这样的东西。 - mwtb
确实,这在最近几个月里一直在发生!请查看我在上面回答中更新的有关TouchDB的链接。 - natevw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接