请有人解释一下JSONStore和CloudantSync (CDTStore) (以及作为奖励PouchDB)在MobileFirst平台上的关键区别?
我很难决定用哪一种更好。
我看到文档这里指出,如果您需要FIPS140-2遵从性,需要同步,或者正在构建一个混合应用程序,JSONStore会更好。但是,看起来您也可以使用CDTStore完成所有这三项操作。另外,我在一些教程中也提到了PouchDB。我正试图理解不同方法之间的关键区别。任何洞察力都将不胜感激。
发布于 2016-04-20 10:16:48
这个问题的答案有点模糊,因为功能确实重叠了一堆,所以事先很抱歉。我在Cloudant团队工作,所以可能是无意中有偏见的。我将尝试详细说明下面的相似之处(就目前的情况而言),希望它能让您(和其他人)更好地了解哪些库与您的应用程序的需求相一致。
要做好准备,相似之处大致如下:
同步
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库,它可以很容易地在混合应用中使用。不幸的是,我对这件事并不熟悉,所以没有什么比这更能说明什么的了:-/
发布于 2016-04-19 18:22:01
几个注意事项:
这三者之间的功能或多或少是相同的。最大的区别在于API、加密数据的能力以及库将在哪种环境中运行。
发布于 2016-04-19 18:09:27
我看到CDTStore (iOS)和CloudantSync (Android)仅指原生实现,而不是混合(Cordova),所以这是一个有效的关键区别。
https://stackoverflow.com/questions/36725159
复制相似问题