Ibm mobilefirst CloudantSync与JSONStore

Ibm mobilefirst CloudantSync与JSONStore,ibm-mobilefirst,cloudant,jsonstore,Ibm Mobilefirst,Cloudant,Jsonstore,有人能解释一下在MobileFirst平台上JSONStore和CloudantSync(CDTStore)(以及作为奖励包DB)之间的主要区别吗 我很难决定哪一个更好用 我看到文档中指出,如果您需要遵守FIPS 140-2、需要同步或正在构建混合应用程序,那么JSONStore会更好。但是,看起来您也可以使用CDTStore完成所有这三项工作。此外,我还看到一些教程中提到了PockDB。我试图理解做同一件事的不同方法之间的关键区别。如有任何见解,将不胜感激 我看到CDTStore(iOS)和C

有人能解释一下在MobileFirst平台上JSONStore和CloudantSync(CDTStore)(以及作为奖励包DB)之间的主要区别吗

我很难决定哪一个更好用

我看到文档中指出,如果您需要遵守FIPS 140-2、需要同步或正在构建混合应用程序,那么JSONStore会更好。但是,看起来您也可以使用CDTStore完成所有这三项工作。此外,我还看到一些教程中提到了PockDB。我试图理解做同一件事的不同方法之间的关键区别。如有任何见解,将不胜感激

我看到CDTStore(iOS)和CloudantSync(Android)只是指本机实现,而不是混合(Cordova),因此这是一个有效的关键区别。

  • 用于iOS上的本机应用程序开发(它是Objective-C库)。还有一个可用的
  • JSONStore可用于、和环境
  • 是一个JavaScript库,可以在多个环境中运行:Node.js、web、混合移动、桌面(如Electron),甚至可以在一些可以运行JavaScript的IoT设备上运行

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

这个问题的答案有点模糊,因为功能确实重叠了很多,所以请提前道歉。我在Cloudant团队工作,所以可能是无意中产生了偏见。我将在下面详细阐述它们的相似性和差异性(目前的情况),这将有助于您(和其他人)更好地了解哪些库符合您的应用程序的需求

为了搭建舞台,这些相似之处大致如下:

  • 两者都存储JSON数据并公开NoSQL而不是关系接口
  • 两者都使用SQLite作为底层持久数据存储
  • 但是,这两种方法都不向客户机公开SQLite——这是一个实现细节。特别是,Sync在SQLite中有一个比较复杂的数据模型来支持同步元数据
  • 两者都设计用于在远程服务的设备上本地安全地存储远程服务的数据
  • 两者都提供了在设备上查询JSON数据的功能。两者都在引擎盖下使用SQLite的索引引擎。
    • Sync提供了一个基于Cloudant查询的更灵活、更强大的系统。Sync通过SQLite的FTS引擎提供全文搜索
    • Sync还允许在任意点创建和删除索引,而我认为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同步。如果您正在使用另一个数据存储,那么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验证(更多信息请参见苹果的文档)。Cloudant Sync for iOS专门使用FIPS 140-2强制加密套件,由其自行选择

在Android上,Cloudant Sync再次使用SQLCipher,开发人员可以集成相同的FIPS 140-2版本。然而,Android Sync使用javax.crypto加密附件,供应商通常不会在FIPS 140-2验证版本中提供。再说一次