我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

译者 | 陈峻

策划 | 云昭

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

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

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

MMKV存储

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

特征如下:

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


Realm数据库

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

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

特征如下:

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

SQLite 

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

特征

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

Firebase

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

特征

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

WatermelonDB

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

特征

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

PouchDB 

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

特征

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


Vasern  

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

特征

  • 它通过UTF-8编码来支持各种语言。
  • 能够支持字符串、整数、双精度、日期时间、以及引用等基本数据类型。
  • 可以通过schema来创建、更新、查询和删除各种记录。

MySQL、MongoDB和DynamoDB

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


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

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

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

小结    

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

原文链接:https://dzone.com/articles/how-developers-need-to-choose-the-right-database-f

译者介绍

陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

如何为应用程序选择合适的数据库

致力于新项目总是超级令人兴奋 - 我们有自由设计和建立任何我们想要的东西的东西。但是,这个规划,当没有正确完成时,将来会导致我们很多痛苦。

如何为 Java 软件选择合适的开发工具?(java软件如何选择适合的开发工具)

在Java软件开发的领域中,选择适合的开发工具是至关重要的一步,它直接影响到开发效率、代码质量以及项目的整体进展。以下是一些在选择Java开发工具时需要考虑的因素和步骤:一、明确项目需求在开始选择开发工具之前,必须明确项
如何为 Java 软件选择合适的开发工具?(java软件如何选择适合的开发工具)
Java2024-12-19

2023年如何选择合适的数据库?​

数据库常常是应用系统中最大的性能瓶颈。一旦部署到生产环境中,就很难迁移,因此为应用系统选择合适的数据库至关重要。
数据库NoSQL2024-11-30

如何选择合适的物联网数据库?

为了帮助选择数据库,物联网技术人员应采取循序渐进的方法,以确保物联网数据库满足其组织的需求。如何选择合适的物联网数据库?

阿里云数据库如何选择合适的数据类型

随着数据量的不断增长,选择合适的数据类型对于保证数据库性能和数据质量至关重要。本文将详细介绍如何在阿里云数据库中选择合适的数据类型,包括理解数据类型的基本概念,了解各种数据类型的适用场景,以及如何在实际应用中进行选择。一、数据类型的基本概念在数据库中,数据类型是用来描述数据的种类和格式的。数据类型通常包括数值类型
阿里云数据库如何选择合适的数据类型
2023-12-11

如何为你的数据选择合适的流处理器?

数据已经成为大多数组织不可或缺的一部分。因此,流处理成为大数据栈的关键部分也就不足为奇了。因为流处理对于整合和解释大量数据非常有效。

比较开源数据库以选择合适的工具

与大多数技术一样,选择开源数据库需要企业进行自我评估,以便为数据选择正确的选项。

TimescaleDB比拼InfluxDB:如何选择合适的时序数据库?

时序数据已用于愈来愈多的应用中,包括物联网、DevOps、金融、零售、物流、石油自然气、制造业、汽车、太空、SaaS,乃至机器学习和人工智能。虽然当前时序数据库仅局限于采集度量和监控,可是软件开发人员已经逐渐明白,他们的确须要一款时序数据库,真正设计用于运行多
TimescaleDB比拼InfluxDB:如何选择合适的时序数据库?
2014-06-21

如何选择适合你的阿里云数据库类型

阿里云提供了多种数据库类型,包括关系型数据库、非关系型数据库和云原生数据库等。在选择数据库类型时,需要考虑以下几个方面:数据量、数据结构、应用场景、性能需求以及成本等因素。本文将详细介绍如何根据这些因素来选择适合你的阿里云数据库类型。数据量:如果你的数据量较小,可以选择使用MySQL或者SQLServer等关系型数据库
如何选择适合你的阿里云数据库类型
2024-01-14

选择最适合Golang开发者的IDE:如何做出明智的决策?

Golang作为一种快速、高效、强类型的编程语言,在近年来的开发中越来越受到开发者的关注。而作为开发者,选择一个合适的集成开发环境(IDE)对于提高开发效率和舒适度来说非常重要。本文将介绍几个主流的IDE,并分析它们在Golang开发中的优
选择最适合Golang开发者的IDE:如何做出明智的决策?
2024-01-16

什么是PDU?如何为数据中心选择合适的PDU

从可用的 PDU 中,为电路选择理想的 PDU 并促进其平稳运行变得至关重要。以下是一些有助于理解PDU 和智能 PDU 配置的问题。
PDU数据中心2024-11-30

阿里云如何选择适合的数据库管理系统

阿里云作为中国最大的云计算服务提供商,一直在不断优化和升级其云数据库服务。然而,对于企业来说,选择适合的数据库管理系统是一项重大的决定。本文将探讨阿里云如何选择适合的数据库管理系统,以及如何根据企业的具体需求来选择最适合的数据库。首先,让我们了解一下阿里云的主要数据库服务。阿里云提供了多种数据库服务,包括关系型数
阿里云如何选择适合的数据库管理系统
2023-10-29

阿里云数据库如何选择最适合你的类型

在选择阿里云数据库时,你需要考虑到你的具体需求,例如数据量大小、访问频率、数据安全性等因素。本文将为你详细介绍阿里云数据库的不同类型,以及如何选择最适合你的类型。正文:RDSforMySQLRDSforMySQL是阿里云提供的关系型数据库服务,它提供了高可用、高安全、高性能和低成本等优势。如果你的数据量较大,且需
阿里云数据库如何选择最适合你的类型
2023-11-09

如何选择最适合你的数据目录

在选择供应商之前,企业需要了解这个市场以及他们的需求和期望。本文可帮助你选择最适合你企业数据的数据目录。

如何选择合适的函数作为内联函数

选择内联函数的准则:函数体较小(少于 10 行代码)频繁调用无副作用与调用位置密切相关代码尺寸不敏感如何选择合适的函数作为内联函数导言内联函数是一种优化技术,它可以通过将函数体直接嵌入到调用它的代码中,来提高性能。但是,并非所有函数都适合
如何选择合适的函数作为内联函数
2024-04-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录