首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CloudantSync对JSONStore

CloudantSync对JSONStore
EN

Stack Overflow用户
提问于 2016-04-19 17:14:46
回答 3查看 365关注 0票数 3

请有人解释一下JSONStore和CloudantSync (CDTStore) (以及作为奖励PouchDB)在MobileFirst平台上的关键区别?

我很难决定用哪一种更好。

我看到文档这里指出,如果您需要FIPS140-2遵从性,需要同步,或者正在构建一个混合应用程序,JSONStore会更好。但是,看起来您也可以使用CDTStore完成所有这三项操作。另外,我在一些教程中也提到了PouchDB。我正试图理解不同方法之间的关键区别。任何洞察力都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-20 10:16:48

这个问题的答案有点模糊,因为功能确实重叠了一堆,所以事先很抱歉。我在Cloudant团队工作,所以可能是无意中有偏见的。我将尝试详细说明下面的相似之处(就目前的情况而言),希望它能让您(和其他人)更好地了解哪些库与您的应用程序的需求相一致。

要做好准备,相似之处大致如下:

  • 两者都存储JSON数据并公开一个NoSQL而不是关系接口。
  • 两者都使用SQLite作为底层持久数据存储。
  • 但是,这两种方法都不向客户端公开SQLite --这是一个实现细节。尤其是,SQLite中有一个有点复杂的数据模型来支持同步元数据。
  • 两者都被设计成在远程服务的设备上本地安全地存储来自远程服务的数据。
  • 两者都提供在设备上查询JSON数据。两者都在底层使用SQLite的索引引擎。
    • Sync提供了一个基于Cloudant查询的更灵活和功能更强大的系统。Sync通过SQLite的FTS引擎提供全文搜索。
    • 同步还允许在任何时候创建和删除索引,而我认为JSONStore在创建集合时需要定义索引。

同步

Cloudant和JSONStore都是围绕着将远程服务的数据本地存储在设备上供离线使用,或者只是为了使用户更快地操作数据而设计的。

我们最初设计了Cloudant (CDTDatastore on iOS,),目的是与远程Cloudant或CouchDB服务器同步数据。当与Cloudant/CouchDB一起使用时,Cloudant支持本地和远程数据更改时的自动增量同步。Cloudant还有一个强大而灵活的模型,取自CouchDB,用于异步解决在不同服务器和设备上并发进行的更改。当同时使用Cloudant Sync + Cloudant/CouchDB时,它是一个强大的组合,并且使用可靠和长期在生产中的同步协议。

正如您所发现的,另一方面,JSONStore对于它的远程数据库是什么更加不可知。然而,这是以同步是一个相当手工的过程为代价的--但重要的是,JSONStore的数据模型提供了显著帮助流程的功能。

这里的关键部分是,JSONStore可以告诉您已经在本地更改的文档,因此您只能增量地上传更改过的数据。但是,除非您的远程数据库支持将更改的数据流到客户端的类似功能,否则您必须发送完整的数据快照或在数据模型中包含必要的数据,以便只允许发送更改的数据(并实现服务器端的部分以允许查询和计算这些数据)。JSONStore不支持立即解决冲突。

我们提供类似的客户端--可以访问的钩子,用于在Cloudant中计算本地更改的数据--这些数据由我们自己的同步引擎使用--但是它们的格式比JSONStore的要少一些,所以我们通常建议继续使用更好的文档化的JSONStore。如果您想试用Sync的钩子,iOS版本的文档是这里

总之,如果您正在使用Cloudant/CouchDB,我建议使用Cloudant。如果您正在使用另一个数据存储,那么JSONStore可能更容易开始。

安全性

JSONStore和Cloudant都支持对客户端的数据进行加密。两者都使用SQLCipher加密JSON数据。此外,Cloudant还可以存储“附件”--与JSON数据相关的小二进制blobs -它们也是加密的。JSONStore不能存储二进制数据。

当与MobileFirst的客户端SDK一起使用时,JSONStore可以用于MF支持的平台上的FIPS 140-2解决方案。MF为此提供了一个独立的OpenSSL二进制文件。

Cloudant在SQLCipher上使用CommonCrypto和iOS。SQLCipher可以在FIPS 140-2版本中商业化购买,并与Cloudant一起使用。某些版本的CommonCrypto是FIPS140-2验证的(更多信息请参见苹果的文档)。Cloudant为iOS专门使用FIPS 140-2强制密码套件,在那里它自己选择它们。

在安卓系统上,Cloudant再次使用SQLCipher,开发者可以使用相同的FIPS 140-2版本进行集成。然而,Android使用javax.crypto加密附件,而供应商通常不提供FIPS140-2验证版本。同样,同步代码使用FIPS 140-2强制套件(在编写本报告时!)。

这意味着Cloudant的情况更加复杂,我们还无法完全确认我们的状态w.r.t。FIPS 140-2然而,在JSONStore和Cloudant中使用的设备上加密的实际安全性是相同的.

这里的总结基本上是,如果您不需要FIPS 140-2,可以选择哪个库更适合您的需要或有您需要的函数。JSONStore目前被推荐用于FIPS 140-2要求,因为它已经被全面审查.

平台支撑与混合

JSONStore支持多个平台。Cloudant完全是iOS和Android。

JSONStore可以用于针对其支持的平台的混合应用程序。如果不手动包装库,Cloudant Sync还不能。

JSONStore的实际实现是每个平台的本地实现,因此如果您使用的是iOS或安卓,那么这个选择主要是基于其他因素的选择。

PouchDB

PouchDB可以与Cloudant类似,与Cloudant和CouchDB同步。作为一个JS库,它可以很容易地在混合应用中使用。不幸的是,我对这件事并不熟悉,所以没有什么比这更能说明什么的了:-/

票数 14
EN

Stack Overflow用户

发布于 2016-04-19 18:22:01

几个注意事项:

  • CDTDatastore用于iOS上的本地应用程序开发(它是一个Objective库)。还有一个可用的Android版本
  • JSONStore可用于iOS安卓JavaScript科多瓦环境。
  • PouchDB是一个可以在多种环境中运行的JavaScript库: Node.js、web、混合移动设备、桌面(例如电子),甚至可以运行JavaScript的一些IoT设备。

这三者之间的功能或多或少是相同的。最大的区别在于API、加密数据的能力以及库将在哪种环境中运行。

票数 2
EN

Stack Overflow用户

发布于 2016-04-19 18:09:27

我看到CDTStore (iOS)和CloudantSync (Android)仅指原生实现,而不是混合(Cordova),所以这是一个有效的关键区别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36725159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档