使用React Native时,我有哪些存储数据的选项? (iOS和Android)

使用React Native时,我有哪些存储数据的选项? (iOS和Android),第1张

概述我在ReactNative世界中仍然是新手,并且通常也在移动/本地世界,我发现文档在数据持久性方面有点缺乏.我在ReactNative中存储数据的选项有哪些?每种类型的含义是什么?例如,我看到有本地存储和异步存储,但后来我也看到像Realm这样的东西,我很困惑所有这些都适用于外部数据库.我特别

我在React Native世界中仍然是新手,并且通常也在移动/本地世界,我发现文档在数据持久性方面有点缺乏.

我在React Native中存储数据的选项有哪些?每种类型的含义是什么?例如,我看到有本地存储和异步存储,但后来我也看到像Realm这样的东西,我很困惑所有这些都适用于外部数据库.

我特别想知道:

>数据持久性的不同选择有哪些?
>对于每个,持久性的限制是什么(即数据何时不再可用)?例如:关闭应用程序时,重新启动手机等.
>对于每个人,iOS和Android之间的实现是否存在差异(除了一般设置)?
>如何比较离线访问数据的选项? (或者通常如何处理离线访问?)
>我还应该记住其他任何考虑因素吗?@H_301_11@

谢谢你的帮助!

解决方法:

这是我学到的东西,因为我确定了推进几个当前应用项目的最佳方式.

异步存储(“内置”到React Native)

我使用AsyncStorage作为生产中的应用程序.存储保留在设备的本地,未加密(如另一个答案中所述),如果您删除应用程序就会消失,但应保存为设备备份的一部分并在升级期间保留(通过CodePush本地升级TestFlight和代码升级) ).

结论:本地存储;您提供自己的同步/备份解决方案.

sqlite的

我参与过的其他项目使用sqlite3进行应用程序存储.这为您提供了类似sql的体验,可压缩的数据库也可以与设备进行传输.我没有将它们同步到后端的任何经验,但我想象存在各种库.有用于连接sqlite的RN库.

数据以传统的数据库格式存储,包括数据库,表,键,索引等,所有数据都以二进制格式保存到磁盘.可以通过命令行或具有sqlite驱动程序的应用程序直接访问数据.

结论:本地存储;您提供同步和备份.

火力地堡

Firebase提供了一个实时的nosql数据库以及一个JsON文档存储(如MongoDB),用于保持1到n个客户端的同步.文档讨论了脱机持久性,但仅针对本机代码(Swift / Obj-C,Java). React Native使用的Google自己的JavaScript选项(“Web”)不提供缓存存储选项(请参阅下面的2/18更新).该库是在假设Web浏览器将要连接的情况下编写的,因此将存在半持久连接.您可以编写本地缓存机制来补充Firebase存储调用,或者您可以在本机库和React Native之间编写桥梁.

[更新2/2018]我已经找到了React Native Firebase,它提供了与原生iOS和AndroID库兼容的JavaScript接口(做了Google可能/应该做的事情),给你带来React奖励的本地库的所有好东西原生支持.随着谷歌在实时数据库旁边引入了一个JsON文档存储,我给Firebase一个很好的第二眼看看我计划构建的一些实时应用程序.

实时数据库存储为类似JsON的树,您可以在网站上编辑并简单地导入/导出.

结论:使用react-native-firebase,RN可以获得与Swift和Java相同的优势. [/ update]适用于网络连接设备.低利用率的低成本.与其他Google云产品完美结合.数据可通过界面轻松查看和编辑.

领域

也是具有自动网络同步的实时对象存储.他们称自己为“设备优先”,演示视频展示了设备如何处理零星或有损网络连接.

它们提供您在自己的服务器或AWS或Azure等云解决方案中托管的免费版本的对象存储.您还可以创建不与设备持久存储的内存存储,不与服务器同步的仅设备存储,只读服务器存储以及跨一个或多个设备同步的完整读写选项.他们拥有专业和企业选择,每月费用比Firebase高.

与Firebase不同,React Native和Xamarin支持所有Realm功能,就像它们在Swift / ObjC / Java(本机)应用程序中一样.

您的数据与代码中的对象相关联.因为它们是已定义的对象,所以您确实具有模式,并且版本控制是代码完整性的必要条件.可通过Realm提供的GUI工具直接访问.设备上的数据文件是跨平台兼容的.

结论:设备优先,可选同步免费和付费计划. React Native支持的所有功能.横向缩放比Firebase更昂贵.

iCloud的

老实说,我没有做过很多这样的比赛,但是在不久的将来会这样做.

如果您有使用CloudKit的本机应用程序,则可以使用CloudKit Js从Web应用程序(或者在我们的示例中为React Native)连接到应用程序的容器.在这种情况下,您可能会有一个原生iOS应用程序和一个React Native AndroID应用程序.

与Realm一样,它在本地存储数据并在可能的情况下将其同步到iCloud.每个客户都有适用于您的应用和私人商店的公共商店.客户甚至可以选择与其他用户共享他们的一些商店或对象.

我不知道访问原始数据有多容易;可以在Apple的网站上设置模式.

结论:非常适合以Apple为目标的应用.

Couchbase

大牌,背后有很多大公司.社区版和企业版具有标准支持成本.

他们在他们的网站上有一个教程,用于连接到React Native.我也没有花太多时间在这个上,但它在功能方面看起来是Realm的可行替代品.我不知道在您的应用程序或您构建的任何API之外获取数据是多么容易.

[编辑:发现一个较旧的链接,讨论Couchbase和CouchDB,而CouchDB可能是另一个需要考虑的选择.这两者在历史上是相关的,但目前是完全不同的产品.见this comparison.]

结论:看起来具有与Realm类似的功能.可以是仅设备或同步.我需要尝试一下.

MongoDB的

我正在使用此服务器端来处理在本地使用AsyncStorage的应用程序.我喜欢将所有内容存储为JsON对象,使得向客户端设备的传输非常简单.在我的用例中,它被用作电视指南数据的上游提供商和我的客户端设备之间的缓存.

数据没有硬结构,如模式,因此每个对象都存储为一个易于搜索,可过滤等的“文档”.类似的JsON对象可以有其他(但不同的)属性或子对象,允许在如何构建对象/数据方面具有很大的灵活性.

我没有尝试任何客户端服务器同步功能,我也没有使用它嵌入.确实存在针对MongoDB的React Native代码.

结论:本地只有Nosql解决方案,没有明显的同步选项,如Realm或Firebase.

[更新2/2019]

MongoDB有一个名为Stitch的“产品”(或服务).由于客户端(在Web浏览器和手机的意义上)不应该直接与MongoDB通信(这是由服务器上的代码完成的),因此他们创建了一个无需服务器的前端,您的应用可以与之交互,如果您选择使用他们的托管解决方案(Atlas).他们的文档显示可能存在同步选项.

这篇来自2018年12月的文章讨论了在示例应用程序中使用React Native,Stitch和MongoDB,以及文档中链接的其他示例(https://www.mongodb.com/blog/post/building-ios-and-android-apps-with-the-mongodb-stitch-react-native-sdk).

Twilio同步

另一个用于同步的Nosql选项是Twilio的Sync.从他们的网站:
“Sync允许您实时管理任意数量的设备,无需处理任何后端基础设施.”

我认为这是上述项目之一的Firebase的替代品,特别是在与两个团队交谈之后.我也喜欢他们的其他通信工具,并使用它们从简单的Web应用程序发送短信更新.

[/更新]

[编辑]自从我最初写这篇文章以来,我花了一些时间在Realm上.我喜欢我不必编写API来同步应用程序和服务器之间的数据,类似于Firebase.无服务器函数对这两个函数看起来也非常有用,限制了我必须编写的后端代码量.

我喜欢MongoDB数据存储的灵活性,因此这成为我选择基于Web和其他连接所需应用程序的服务器端.

我找到了RESTHeart,它为MongoDB创建了一个非常简单,可扩展的RESTful API.构建一个React(Native)组件来读取和写入restheart的JsON对象应该不会太难,而restheart又将它们传递给MongoDB或从MongoDB传递它们.

[编辑]我添加了有关数据存储方式的信息.有时,如果您需要调整和测试数据,了解在开发和测试期间您可能需要做多少工作是很重要的.

[更新2/2019]在过去一年(2018年)设计高并发性项目时,我尝试了其中几个选项.他们中的一些人在他们的文档中提到了硬性和软性并发限制(据我所知,Firebase在10,000个连接上有一个很难的连接,而Twilio是一个可能受到冲击的软限制,根据与AltConf的两个团队的讨论).

如果您要为数十到数十万用户设计应用程序,请准备相应地扩展数据后端.

总结

以上是内存溢出为你收集整理的使用React Native时,我有哪些存储数据的选项? (iOS和Android)全部内容,希望文章能够帮你解决使用React Native时,我有哪些存储数据的选项? (iOS和Android)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1103883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存