PouchDB和CouchBase Lite + LiteGap之间的区别

20
在一个Phonegap离线/在线项目中:
  • 使用PouchDB和使用新的LiteGap插件的CouchBase Lite有什么区别?

  • 它们是同一个问题的两种不同解决方案吗?

  • 可以使用PouchDB API与本地CouchBase Lite数据库进行交互吗?

3个回答

32

经过一些研究并且这是一个相对较新的话题,我觉得分享一下我的经验会很有趣:

PouchDB和使用新的LiteGap插件的CouchBase Lite之间有什么区别?

PouchDB可以在设备上创建本地数据库(websqlIndexedDB),并将其与外部CouchDB同步。也可以用作外部CouchDB的客户端。

Couchbase Lite在设备上创建了一个iOS/Android数据库,默认情况下可以通过http://localhost:5984访问。然后,您可以将本地Couchbase Lite与其他外部Couchbase/CouchDB服务进行同步。LiteGap允许您在PhoneGap项目中创建和使用Couchbase Lite数据库。

这两种解决方案都可以在Phonegap项目中使用。

它们是同一个问题的两个不同解决方案吗?

简而言之,不是。

PouchDB是跨平台的,因此您可以在Web项目和混合应用中使用它。同时,它提供了一个有用的API,直接与本地数据库或外部CouchDB交互。由于它基于websql/IndexedDB技术,所以您可能会遇到存储限制,要求用户允许更多的本地存储空间用于您的Web应用/应用程序。

Couchbase Lite是本机的iOS/Android解决方案,可以在设备localhost上设置Couchbase数据库。结合LiteGap插件,您可以在Phonegap项目中使用它。

可以使用PouchDB API与本地的CouchBase Lite数据库进行交互吗?

可以,但在我的测试中有一些功能无法正常工作。

首先,Couchbase Lite没有javascript HTTP API,因此我想使用Pouch作为客户端。 PouchDB可以使用外部Couch服务,因此我们设置Pouch以使用设备上的Couchbase Lite在localhost:5984.

现在,有了Pouch,您可以创建数据库,从本地put()replicate到云端。然而,我在使用Pouch的replicate.from方法复制云端到本地时遇到了问题。解决这个问题的一种方法是使用传统的$.ajax设置双向复制,将数据以对象形式发送到设备的http://localhost:5984/_replicate,就像使用node curl一样(通过传递sourcetargetcontinuous等参数)。
希望这能对那些在创建离线/在线同步混合应用程序时做出技术选择决策的人有所帮助。

1
“Cordova/PhoneGap 的 SQLite 插件”在 http://pouchdb.com/adapters.html 上说,由于 PouchDB 与 SQLite 集成,我们不再需要关注配额等问题。如果我没记错的话! - inblueswithu

10

想告诉你,我写了一篇详尽的性能评估来展示CouchDB和Couchbase Lite之间的差异。

一些发现:

  • 当“添加批量文档”和“按ID获取文档”时,PouchDB胜出
  • 当“获取所有文档”时,Couchbase Lite胜出
  • 它们在“通过视图查询文档”时旗鼓相当(PouchDB更快,但Couchbase Lite具有缓存)

1
除了其他两个答案之外,这里是Couchbase.com博客网站上的一个示例应用程序,展示如何使用pouchDB构建待办事项列表应用并将其与CouchBase Mobile同步。
另一个链接在Blackberry开发者博客上。

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