【鸿蒙开发】04 数据本地及跨设备持久化之关系型数据库 - ohos.data.relationalStore
上一篇文章介绍了使用RDB(@ohos.data.rdb)进行数据存储,但是在使用它进行开发的过程中,发现部分接口已经被废弃,所以通过查询官方文档,发现了最新的关系型数据库的使用。
一、前言
上一篇文章介绍了使用RDB(@ohos.data.rdb)进行数据存储,但是在使用它进行开发的过程中,发现部分接口已经被废弃,所以通过查询官方文档,发现了最新的关系型数据库的使用。
二、关系型数据库
基本概念
关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等,又或者公司的雇员信息,需要包括姓名、工号、职位等,由于数据之间有较强的对应关系,复杂程度比键值型数据更高,此时需要使用关系型数据库来持久化保存数据。
运作机制
关系型数据库对应用提供通用的操作接口,底层使用SQLite作为持久化存储引擎,支持SQLite具有的数据库特性,包括但不限于事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句。
约束限制
-
系统默认日志方式是WAL(Write Ahead Log)模式,系统默认落盘方式是FULL模式。
-
数据库中有4个读连接和1个写连接,线程获取到空闲读连接时,即可进行读取操作。当没有空闲读连接且有空闲写连接时,会将写连接当做读连接来使用。
-
为保证数据的准确性,数据库同一时间只能支持一个写操作。
-
当应用被卸载完成后,设备上的相关数据库文件及临时文件会被自动清除。
-
ArkTS侧支持的基本数据类型:number、string、二进制类型数据、boolean。
-
为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。
三、关系型数据库跨设备数据同步
当应用程序本地存储的关系型数据存在跨设备同步的需求时,可以将需要同步的表数据迁移到新的支持跨设备的表中,当然也可以在刚完成表创建时设置其支持跨设备。
基本概念
关系型数据库跨设备数据同步,支持应用在多设备间同步存储的关系型数据。
应用在数据库中新创建表后,可以设置其为分布式表。在查询远程设备数据库时,根据本地表名可以获取指定远程设备的分布式表名。
设备之间同步数据,数据同步有两种方式,将数据从本地设备推送到远程设备或将数据从远程设备拉至本地设备。
运作机制
底层通信组件完成设备发现和认证,会通知上层应用程序设备上线。收到设备上线的消息后数据管理服务可以在两个设备之间建立加密的数据传输通道,利用该通道在两个设备之间进行数据同步。
业务将数据写入关系型数据库后,向数据管理服务发起同步请求。
数据管理服务从应用沙箱内读取待同步数据,根据对端设备的deviceId将数据发送到其他设备的数据管理服务。再由数据管理服务将数据写入同应用的数据库内。
数据变化通知机制
增、删、改数据库时,会给订阅者发送数据变化的通知。主要分为本地数据变化通知和分布式数据变化通知。
本地数据变化通知:本地设备的应用内订阅数据变化通知,数据库增删改数据时,会收到通知。
分布式数据变化通知:同一应用订阅组网内其他设备数据变化的通知,其他设备增删改数据时,本设备会收到通知。
约束限制
-
每个应用程序最多支持同时打开16个关系型分布式数据库。
-
单个数据库最多支持注册8个订阅数据变化的回调。
四、@ohos.data.relationalStore (关系型数据库)
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。支持通过ResultSet.getSendableRow方法获取Sendable数据,进行跨线程传递。
五、文章来源:
更多推荐
所有评论(0)