3

​开发者如何为React Native选择合适的数据库

 1 year ago
source link: https://blog.51cto.com/u_7390037/5510252
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

​开发者如何为React Native选择合适的数据库

原创

WOT技术大会 2022-07-25 10:45:13 ©著作权

文章标签 数据库 数据 android 文章分类 其它 数据库 yyds干货盘点 阅读数135

​开发者如何为React Native选择合适的数据库_android

本文将和大家一起深入讨论合适React Native的数据库的各种特性和优缺点,并最终给出为React Native应用进行选择时的建议。

如今,程序员们可以选用多种编程语言,来创建在线平台、网站和应用程序。其中,在编程社区中,广受不同开发背景的人员所推崇的一种流行语言,便是React Native。它是由Facebook的JavaScript工具包所构建,适合为移动平台、而非Web,设计和创建独特的用户界面。目前,React Native已被广泛地运用在采用JavaScript的框架,并为iOS和Android平台构建移动应用的项目中。

可以说,该领域的开发者不但需要了解JavaScript和API服务、而且要能够构建前端的UI,维护跨平台的兼容性、以及整合基础架构与其他应用。下图展示了历年来,时下各种编程语言,在项目中被使用的占比分布。

​开发者如何为React Native选择合适的数据库_数据库_02

目前,适合React Native应用的数据库有:Async Storage、SQLite、Realm、以及PouchDB等。下面,我将和大家一起深入讨论各种数据库的特性和优缺点,并最终给出为React Native应用进行选择时的建议。

PART 01

MMKV存储

由C++开发的MMKV存储具有快速高效的特点,可方便您在React Native应用中快速地保存数据。同时,该数据库非常轻巧。它在Android上仅占50K空间,而在iOS上只有30K。如果被打包的话,其体积会更小。此外,MMKV不但支持redux-persist(持久化),而且允许用户保存任何形式(无论是否加密)的数据。

特征如下:

  • 支持加密(安全存储)。
  • 支持多实例(将用户数据与全局数据分开)。
  • 自定义存储位置。
  • 由于一切都是用C++编写的,因此具有高性能。
  • 比Async Storage快大约30倍。
  • 使用JSI框架,而不是旧的“桥”模式。
  • 支持iOS、Android和Web。
  • 易于使用React Hooks的API。
​开发者如何为React Native选择合适的数据库_数据库_03

PART 02

Realm数据库

由于可以使用动态映射到完整且专有的数据库引擎,基于SQLite的Realm能够处理各种原生的JavaScript对象,并在保持性能的同时,提供一套简单的API。同时,Realm允许开发者创建各种高级搜索、复杂的数据表示、以及在图表中的事物链接。

Realm在Android中属于轻量级数据库。与下文将讨论的SQLite相比,Realm不但使用的内存更少,而且在读写数据等常见操作上的速度更快。此外,它还具有极其丰富的功能集。

特征如下:

  • 由于Realm属于对象存储,因此对象之间的关系可以通过各种“链接”来实现。
  • 每个“链接”都能够创建一个与链接到当前对象的“反向链接”映射。
  • Realm可以更新其实例版本。
  • Realm带有零拷贝(zero-copy)架构,以及延迟加载(lazy-loaded)式的数据访问。
​开发者如何为React Native选择合适的数据库_数据_04

PART 03

SQLite 

作为C语言数据存储库的SQLite,在移动应用程序中,特别适用于离线应用。许多平台都以简便的设置方式,提供了开箱即用的SQLite支持。而作为最著名的免费Android开发数据库之一,它不但具有开源的显著特点,而且可以满足开发人员广泛的项目需求。

  • 能够在iOS和Android上提供相同JavaScript API。
  • 在各种Java和Native模式下,以及Android中都可以被使用。
  • 其简单的回调(callback)和Promises可以被用于连接JavaScript里的SQL事务。
  • 可以从应用程序包和沙箱中,导入预填充的SQLite数据库。
  • Windows能够像在iOS和Android上一样,支持回调API。
​开发者如何为React Native选择合适的数据库_数据_05

PART 04

Firebase

Firebase实时数据库是一个由Google支持的应用开发平台,可允许开发人员为iOS、Android和web创建各种应用。而作为一种基于云端的NoSQL数据库,Firebase可以通过提供分析跟踪、报告、应用问题修复、以及市场和产品实验功能(experimentation capabilities)等服务,在用户之间实现实时存储和数据同步。

  • 即使应用处于离线状态,数据也能在所有客户端之间实时同步。
  • 可以让开发人员更专注于打造出色的用户体验,而无需管理服务器。
  • Firebase为您准备好了通用的服务器、API和数据存储,您只需按照实际需求进行修改即可,而不需重新编写。
  • 按照云托管数据库的需求,Firebase可以将数据以JSON格式进行存储,并进一步持续同步到每个关联的客户端上。
  • 作为基于云服务的数据库,它可被用于管理应用程序的数据,并提供快速的数据结果。
​开发者如何为React Native选择合适的数据库_数据_06

PART 05

WatermelonDB

在React Native和React的在线项目中,WatermelonDB提供了一种管理用户数据的新方法。它是专为创建复杂的React Native应用而设计的,且十分重视应用的实际性能。简单而言,由于Watermelon的架构与数据库无关,因此开发者可以横跨多个平台使用它,并能达到快速启动软件的效果。此外,作为一个高级数据管理层,Watermelon还可以根据平台的要求,连接到任何React原生的数据库层面上。

  • 由于使用延迟加载,Watermelon DB可以只在被请求时才加载数据。据此,应用程序的可扩展性可以得到大幅增强。
  • 由于所有的查询都是在其不同的线程上完成的,因此大多数查询只需不到1毫秒的时间。
  • 无论后端的数据体量有多大,您都可以立即启动应用程序。
  • 它能够与iOS、Android和web相兼容。
  • 它使用JavaScript的静态类型检查器,通过Flow的方式进行静态类型转化。
  • 它具有快速、异步、多线程和高度缓存等特性,也可与同步引擎协同工作,以保持原生本地数据库与远程数据库的同步。
​开发者如何为React Native选择合适的数据库_数据_07

PART 06

PouchDB 

PouchDB是一个基于Apache CouchDB的开源JavaScript类型的数据库。它针对在浏览器中的各种使用场景进行了优化。PouchDB在浏览器中会使用IndexedDB和WebSQL在本地存储数据,并且持续实现本地和远程数据库的交互。据此,PouchDB可以帮助Web开发人员创建具有离线和在线等效功能的应用。也就是说,它允许应用在离线时,将数据保存在本地,而在应用重新上线后,再与CouchDB和其他兼容的服务器相同步,以确保用户的数据始终为最新。

  • 由于PouchDB提供的API在所有浏览器中都是相同的,因此它可以在各种浏览器中被流畅地使用。
  • 如果您对编程语言有所了解,那么学习和理解PouchDB并非难事。
  • 作为一种轻量级的API,我们可以方便地使用script标签来包含它。
​开发者如何为React Native选择合适的数据库_android_08

PART 07

Vasern  

Vasern是一种基于链接一致性的键-值存储式React Native数据存储系统。其目标是提供一个开源、且对开发人员友好的端到端数据库系统。而且,由于其数据引擎是从头开始创建的,因此Vasern提供了原生的性能。

  • 它通过UTF-8编码来支持各种语言。
  • 能够支持字符串、整数、双精度、日期时间、以及引用等基本数据类型。
  • 可以通过schema来创建、更新、查询和删除各种记录。
​开发者如何为React Native选择合适的数据库_数据_09

PART 08

MySQL、MongoDB和DynamoDB

一些小型组织往往会使用MySQL、MongoDB和DynamoDB等服务器端数据库,进行React Native的应用开发。三者的比较如下:

​开发者如何为React Native选择合适的数据库_android_10

开发人员在选择数据库之前需要考虑什么?

众所周知,在中小型软件运行的过程时,数据往往是被保存在变量之中的。不过,当程序重启时,变量则会因为恢复初始值,而导致数据的丢失。对此,我们需要数据库在能够起到很好的数据存储、保持、以及在程序重启后的持续检索等作用。通常,我们可以在为React Native应用选择数据库之前,考虑如下方面:

  • 应确保数据库具有足够的内存,可供软件的执行。
  • 选择可以处理复杂数据结构(如整篇文档或对象)的数据库。
  • 当用户从离线恢复为在线状态时,应能够通过集成来实现数据库中数据的同步。
  • 容易实现应用与数据库的集成。

PART 09

小结    

上述介绍的各种数据库分别有着自己的一组特性和优缺点。因此,在为React Native应用选择合适的数据库时,开发人员应当清楚地了解自己的项目目标和应用需求,通过试用、比较和深入研究,从中选择最符合要求的数据库。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK