由Facebook创建的React Native,是目前广受欢迎的、头部的开源移动应用框架。作为一个跨平台的开发框架,它既能够支持诸如:Android、iOS、tvOS、macOS、Windows、以及UWP等各种系统与智能设备,又允许开发人员只需一次性编写JavaScript代码,便可创建出与各种移动平台相兼容的应用程序。因此,React Native不但有助于节省开发人员的时间,而且能为客户节省开发的成本。
React Native的主要特点
- 开源。
- 直观且模块化。
- 可加速开发进程。
- 提供强大的社区支持。
- 支持代码重用。
- 提供实时重载。
目前,有许多JavaScript类技术公司都围绕着React Native,创建了各种非常实用的技术栈。在进行扩展、甚至是一些小规模的应用项目中,移动开发人员需要慎重地选择技术栈。这其中就包括了对于React Native数据库的选择。毕竟,他们需要将开发的应用程序,处理和存储在一个安全有效的数据库中。下面,让我们来一起讨论有哪些因素和标准,值得我们在选择React Native数据库时,予以全面考虑。
1.内存的处理能力
显然,如果数据库在处理数据方面效率不高,就会直接导致React应用程序频繁出现崩溃的情况。对此,大多数React Native数据库会定期清理其缓存,以确保能够剩余足够的内存可供访问,进而保证应用程序的平稳运行。
2.冲突的处理能力
由于移动应用需要通过与系统的协作,来实现相关功能,因此为了事先解决好可能引发的数据冲突,React Native数据库应当能够在其存储库或网站上,共享其冲突管理的规则。有专家建议,我们可以通过浏览待选数据库的文档,以了解它们会如何管理同步、冲突、以及它们会对React应用程序产生何种影响。
3.应用数据的复杂性
React Native数据库在处理各种复杂应用架构和代码方面的能力,直接决定了它是否能够协助开发者创建出可扩展的、面向未来的React应用。因此,在预算许可的前提下,请选择高效的React Native数据库,来管理丰富的对象、文档等复杂的数据结构。
4.能否同步脱机数据
诚然,如今我们已习惯了通过流畅的网速,随时随地加载并使用移动应用。但是,在某些非常情况下,一旦出现了断网或网速受限,那么移动应用则需要提供相应的脱机服务。为此,您所选择的React Native数据库,应当能够在用户再次恢复网络连接时,提供脱机数据的同步。
5.易于使用
为了能够将复杂的数据管理过程化繁为简,React Native数据库应当易于设置、提供工具、并便于使用。
五大首选React Native数据库
在了解了React Native数据库的选择因素和标准后,我们来讨论目前市场上较为流行的五大首选React Native数据库:
1. Amazon DynamoDB
Amazon DynamoDB旨在为功能齐全、且被托管的NoSQL数据库提供服务。它运行在Amazon的AWS云端,并且是完全去中心的。由于具有水平扩展能力和成本效益的特性,因此用户在使用Amazon DynamoDB时,只需要为存储和I/O的吞吐量支付费用。
Amazon DynamoDB的主要特点
- 能够执行具有强一致性的读取。
- 能够快速读取与写入数据。
- 可以根据吞吐量进行扩/缩容。
- 是一项全面的托管服务。
- 可执行各种并行筛选(parallel screens)。
- 能够自动生成UUID。
- 提供全局二级索引。
- 提供本地二级索引。
- 通过“点击按钮即可扩展(Push-button scaling)”的功能,可确保在不造成任何停机的前提下,对数据库进行在线扩/缩容。
Amazon DynamoDB的优点
- 易于设置。
- 提供Non-hourly计费模式。
- 支持各种数据流。
- 支持生存时间(Time-to-Live,TTL)功能。
Amazon DynamoDB的缺点
- 仅提供较弱的查询模式。
- 成本难以预估。
- 服务器端更新不及时。
售价
为了避免价格估算的复杂性,Amazon DynamoDB在其网站上提供了一个方便成本计算的工具,可让用户在配置每个组件,并在定制软件包服务时,粗略地估算总成本。当然,随着应用程序存储数据量的增多,DynamoDB对于成本消耗也会逐步攀升。
谁在使用Amazon DynamoDB?
- Netflix
- Lyft
- Amazon
- The New York Times
- Medium.com
- Delivery Hero
2. MongoDB
MongoDB是一个开源的服务器端React Native数据库。它在构建之初就考虑到了可扩展性和复杂的应用程序。通过采用动态模式,MongoDB在JSON文档中,将键-值存储与关系型数据库相结合。如果您的React应用程序需要处理大量数据,那么就可以使用MongoDB,在不影响React Native应用正常运行的情况下,修改其架构。MongoDB并不使用诸如SQL之类特定的域语言(domain-specific languages),而是仅使用简单的JavaScript接口,进行查询。
MongoDB的主要特点
- 可按需优化查询,并执行实时分析。
- 其复制功能可提高数据的稳定性和可用性。
- 适当的索引可以更好地执行查询。
- 支持负载均衡。
- 可实现数据分片(Sharding)。
MongoDB的优点
- 提供灵活的数据库。
- 可实现数据分片。
- 提供高可用性。
- 高速快捷。
- 提供可扩展性。
- 支持按需查询。
- 提供技术支持。
- 支持简易的环境。
MongoDB的缺点
- 内存使用率较高。
- 不支持联合查询。
- 嵌套功能有限。
- 数据大小受限。
售价
MongoDB为共享集群、专用集群和专用多区域集群,提供如下三种不同的定价方案。
在价格上
- 共享集群-免费。
- 专用集群-每月$57。
- 专用多区域集群—每月$95。
在存储上
- 共享集群-512 MB到5 GB。
- 专用集群-10 GB至4 TB。
- 专用多区域集群-10 GB至4 TB。
在内存上
- 共享集群-共享。
- 专用集群-2 GB至768 GB。
- 专用多区域集群—2 GB至768 GB。
谁在使用MongoDB?
- Uber
- Lyft
- Alibaba Travels
- Accenture
- Delivery Hero
- Trello
3. Firebase
由Google创建的Firebase平台,可用于创建移动和Web应用。它最初是一家成立于2011年的独立公司,Google于2014年将其作为支持React Native的NoSQL数据库予以了收购。由于非常适合对于数据同步和脱机数据的修改需求,因此Firebase可以很好地处理React Native应用中MVC(Model View Controller)架构的“M”(模型)和“C”(控制器)。
Firebase的主要特点
- 对报告不做限制。
- 能与其他服务相集成。
- 支持受众细分(Audience Segmentation)。
- 提供数据库管理。
- 支持文件存储。
- 具有云代码。
- 可扩展主机。
- 支持机器学习。
Firebase的优点
- 便于实现实时的后端。
- 提供快速响应。
- 具有出色的文档。
- 支持快速原型制作。
- 可实时同步。
- 易于安装。
- 安全性非常到位。
Firebase的缺点
- 对iOS功能的支持较为有限。
- 成本价格难以预测。
- 查询功能较为有限。
- 易被供应商锁定。
- 数据迁移可能存在问题。
- 无法在Google服务不可用的国家和地区被使用。
售价
Firebase有两种定价计划--Spark和Blaze:
- 火花版(Spark Plan):作为免费版本,大量用户可以为整个网站或应用设置数据库、消息传递的验证、具有SSL的自定义域、以及各种云端功能。
- 火焰版(Blaze Plan):可用于较大规模的应用,属于“按需付费”模式,即:用户只需按照实际使用到的Firebase存储进行支付。当然,其中也会包含一些日常的费用。Firebase独家提供直观的上限设置和预算报警功能,以免用户在使用中超额。
谁在使用Firebase?
- Atlassian
- Wishlist
- Athelas
- Studemy
4. SQLite
作为一种C语言库,SQLite平台最初旨在为用户提供,创建移动应用的本地存储数据库。由其名称中的“lite”可知,它属于轻量级,仅包含最小的设置功能。SQLite使用可添加的数据管理工具,来执行大多数SQL策略。它通过免费且能够在公共领域中使用的方式,来吸引广大开发人员。
SQLite的主要特点
- 几乎实现零配置。
- 属于无服务器(ServerLess)的一种。
- 使用单个数据库文件。
- 具有稳定的跨平台数据库文件。
- 提供可读的源代码。
- 具有SQL语言扩展。
SQLite的优点
- 轻量级。
- 可移植。
- 免费。
- 简单。
- 能与TCL集成。
- 已预装在iOS和Android上。
SQLite的缺点
- 默认限制为2 GB。
- 不支持多客户端的并发访问。
- 最大数据库限制为140 TB。
- 最大可添加的数据库为125个。
售价
SQLite可供公共领域免费使用。如果贵组织想要获得版权(防侵权)许可证,则需一次性支付6000美元。
谁在使用SQLite?
- Alibaba Travels
- Accenture
- Adidas Runtastic
- Typeform
5. Realm
作为一个面向对象的开源数据库,Realm的运行速度比大多数关系型数据库要快上十倍。由于能够处理实时和脱机应用中的复杂数据类型,因此开发人员可以将它用于React Native项目中。Realm不需要任何键-值存储,甚至不需要与对象相关的映射(object-related mapping)。与市场上大多数React Native数据库相比,Realm不但自带搜索引擎,而且可以高效地修复查询。因此,它是大型React Native应用的一种理想选择。
Realm的主要特点
- 可创建响应式移动应用(Reactive Mobile App)。
- 可实现并发控制。
- 带有面向对象的数据模型。
- 提供用于同步的日志组件。
- 提供查询界面。
- 带有存储架构。
Realm的优点
- 专为离线使用而设计。
- 专为移动设备而设计。
- 对开发人员来说比较直观。
- 提供完全加密。
- 开源。
- 可以跨平台使用。
- 支持数据同步。
Realm的缺点
- APK的体积较大。
- 会使用更多的内存。
- 无法自动递增(Auto-increment)。
- 对模型的类别有所限制。
售价
Realm的普通版本是完全开源且免费的,其专业版的价格为1750美元。如果您想使用由它提供的React Native数据平台、各种软件包的话,则需每月支付1750美元。
谁在使用Realm?
- Discontinuity
- Patreon
- Araclx
- Kargo Client Dashboard
小结
综上所述,五种React Native数据库各有利弊。您可以根据自己手头的实际项目特征,在充分了解其相关文档和社区反馈的基础上,有针对性地选择一、两款进行试用。
原文标题:5 Most Preferred React Native Databases,作者:Ronak Patel
原文地址:https://database.51cto.com/art/202104/657388.htm