应用数据持久化
1. 概述
应用数据持久化,是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象,存储介质上的数据形态可能是文本、数据库、二进制文件等。
2. 分类
OpenHarmony标准系统支持典型的存储数据形态,包括用户首选项、键值型数据库、关系型数据库,另外,persistentStorage也支持数据持久化。
- persistentStorage:全局持久化存储UI状态,通常和AppStorage配合使用,选择AppStorage存储的数据写入磁盘,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同;
注意:1. PersistentStorage和UI实例相关联,持久化操作需要在UI实例初始化成功后(即loadContent传入的回调被调用时)才可以被调用,早于该时机调用会导致持久化失败。
2.初始化一次即可,AppStorage中的更改会自动同步到PersistentStorage。 若是多次进行初始化,最后一次初始化的值将会覆盖之前。
-
用户首选项(Preferences):通常用于保存应用的配置信息。数据通过文本的形式保存在设备中,应用使用过程中会将文本中的数据全量加载到内存中,所以访问速度快、效率高,但不适合需要存储大量数据的场景。
-
键值型数据库(KV-Store):一种非关系型数据库,其数据以“键值”对的形式进行组织、索引和存储,其中“键”作为唯一标识符。适合很少数据关系和业务关系的业务数据存储,同时因其在分布式场景中降低了解决数据库版本兼容问题的复杂度,和数据同步过程中冲突解决的复杂度而被广泛使用。相比于关系型数据库,更容易做到跨设备跨版本兼容。
-
关系型数据库(RelationalStore):一种关系型数据库,以行和列的形式存储数据,广泛用于应用中的关系型数据的处理,包括一系列的增、删、改、查等接口,开发者也可以运行自己定义的SQL语句来满足复杂业务场景的需要。
3. 拓展
为什么选择用户首选项/键值型/关系型数据库进行持久化存储?
preferences是一种以key-value键值型的一种轻量级数据持久化,可以快速从缓存读取,适合存储应用信息配置,用户偏好这些少量数据。
键值型数据库适合场景复杂度低,由于复杂度低,所以适合兼容跨设备跨版本的数据库存储。
关系型数据库适合存储复杂一些的关系模型数据,数据量没有限制,ArkTS应用侧的规定单条数据不要超过2M。
为什么使用Perferences/数据库,不用persistentStorage?
PersistentStorage的持久化变量最好是小于2kb的数据,不要大量的数据持久化,因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。
如果开发者需要存储大量的数据,建议使用首选项或者数据库,并且可以使用Promise异步并发的形式来进行持久化。