CloudantSync与JSONStore

Ted*_*gan 2 cloudant jsonstore ibm-mobilefirst

有人可以在MobileFirst平台上解释JSONStore和CloudantSync(CDTStore)之间的主要区别(以及作为奖励PouchDB)吗?

我很难决定哪一个会更好用.

我看到这里的文档指出,如果您需要FIPS 140-2合规性,需要同步或正在构建混合应用程序,JSONStore会更好.但是,看起来你可以用CDTStore完成所有这三个.另外,我在一些教程中看到了PouchDB.我试图理解看起来像做同样事情的不同方法之间的关键差异.任何见解将不胜感激.

Mik*_*des 13

这个问题的答案有点模糊,因为功能确实重叠了一堆,所以提前抱歉.我在Cloudant团队工作,所以我可能无意中有偏见.我将尝试详细说明下面的相似之处(正如他们现在所说的那样),这将有希望让您(和其他人)更好地了解哪些库与您的应用需求保持一致.

为了设定阶段,相似之处是广泛的:

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

同步

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

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

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

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

我们提供了类似的客户端可访问钩子,用于在Cloudant Sync中处理本地更改的数据 - 这些钩子由我们自己的同步引擎使用 - 但是它们比JSONStore的原始文档和记录更少,因此我们通常建议坚持使用更好的文档JSONStore.如果您想试用Sync的钩子,那么iOS版本的文档就在这里.

总之,如果您正在使用Cloudant/CouchDB,我建议使用Cloudant Sync.如果您正在使用其他数据存储区,则JSONStore可能更容易开始使用.

安全

JSONStore和Cloudant Sync都支持在客户端上加密数据.两者都使用SQLCipher加密JSON数据.此外,Cloudant Sync可以存储"附件" - 与JSON数据相关联的小型二进制blob - 也是加密的.JSONStore无法存储二进制数据.

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

Cloudant Sync在iOS上使用SQLCipher和CommonCrypto.SQLCipher可以在FIPS 140-2版本中商业购买,并与Cloudant Sync一起使用.某些版本的CommonCrypto经过FIPS 140-2验证(有关更多信息,请参阅Apple的文档).适用于iOS的Cloudant Sync仅使用FIPS 140-2强制加密套件,并自行选择它们.

在Android上,Cloudant Sync再次使用SQLCipher,使用相同的FIPS 140-2版本供开发人员集成.Android Sync使用javax.crypto来加密附件,但供应商通常不会在FIPS 140-2验证版本中提供这些附件.同样,Sync代码使用FIPS 140-2强制套件(在撰写本文时!).

这意味着Cloudant Sync的情况更加复杂,我们还无法完全确认我们的状态是否符合FIPS 140-2标准.但是,JSONStore和Cloudant Sync中使用的设备上加密的实际安全性是相同的.

这里的摘要基本上是,如果您不需要FIPS 140-2,请选择更适合您需求的库或具有您需要的功能.JSONStore目前推荐用于FIPS 140-2要求,因为它已经过全面审查.

平台支持和混合

JSONStore支持多种平台.Cloudant Sync仅限iOS和Android.

JSONStore可用于面向其支持平台的混合应用程序.如果没有手动包装库,Cloudant Sync还不能.

JSONStore的实际实现是每个平台的本机实现,因此,如果您使用的是iOS或Android,则选择主要是基于其他因素的选择.

PouchDB

与Cloudant Sync类似,PouchDB可以与Cloudant和CouchDB同步.作为JS库,它可以很容易地用于混合应用程序.不幸的是我对它并不熟悉,所以不能说比任何权威更多: - /