相关问题
API9 原子化服务数据持久化的参考文档有哪些?
2357浏览 • 1回复 待解决
关于数据持久化使用问题
121浏览 • 1回复 待解决
如何实现应用数据持久化存储
2026浏览 • 1回复 待解决
持久化数据PersistentStorage使用问题求助
7041浏览 • 1回复 待解决
关于数据持久化存储要如何实现
431浏览 • 2回复 待解决
卡片开发中如何实现数据持久化
1943浏览 • 1回复 待解决
HarmonyOS 如何进行数据持久化
220浏览 • 1回复 待解决
求大佬告知如何实现数据持久化
334浏览 • 1回复 待解决
PersistentStorage 持久化缓存的数据在哪里能看到????
2281浏览 • 1回复 待解决
有哪些创建线程的方式
2086浏览 • 1回复 待解决
查看文件列表的方式有哪些?
275浏览 • 1回复 待解决
#鸿蒙学习大百科#分布式数据对象的持久化有什么意义?
111浏览 • 1回复 待解决
本地App持久化数据,每次安装都会被重置
279浏览 • 1回复 待解决
如何在IDE每次run项目后数据持久化?
811浏览 • 1回复 待解决
HarmonyOS 使用首选项实现数据持久化遇到的问题
355浏览 • 0回复 待解决
数据持久化存储,HarmonyOS如何使用简单数据和复杂数据?
304浏览 • 1回复 待解决
ArkTS实现时钟的方式有哪些?
961浏览 • 1回复 待解决
HarmonyOS 持久化存储方案
165浏览 • 1回复 待解决
PersistentStorage持久化存储问题
331浏览 • 0回复 待解决
#鸿蒙学习大百科#如何理解应用数据的持久化?
133浏览 • 2回复 待解决
获取MainAbility name的方式有哪些呢?
1648浏览 • 1回复 待解决
关于图文混排的实现方式有哪些
264浏览 • 1回复 待解决
HarmonyOS使用“通过用户首选项实现数据持久化”问题
408浏览 • 1回复 待解决
HarmonyOS PersistentStorage 持久化数据成功后,AppStorge.get 为空
131浏览 • 1回复 待解决
http 请求 如何cookie持久化?
1925浏览 • 1回复 待解决
持久化是将内存中的对象或者数据存在
数据库或者保存为
文件。
讨论:支持存储的
数据格式、
持久化文件类型和路径、使用的
场景。
当前仅针对应用本身,不涉及应用分享和分布式。
AppStorage + PersistentStorage
AppStorage
AppStorage可以和UI组件同步,属性支持双向绑定,数据支持本地或者远程。
(当前文章不涉及分布式的场景)
对比
LocalStorage
路径无法通过context获取,且文件有多份,多文件不会同步。
这里有个问题:文件并不代表最新的值
例子:
1. entry创建aProp的值为47
2. application修改aProp的值为52
3. 查看entry下persistent_storage文件中aProp值未改变,依然是47;但是application下persistent_storage文件中aProp值已改变。
4. entry中通过接口获取aProp值与application中通过接口获取aProp值一致,都为52。
/data/app/el2/100/base/com.example.filedemo/
haps/entry/files/persistent_storage
**存储文件:**XML文件
/data/app/el2/100/base/com.example.filedemo/haps/entry/files/persistent_storage
使用限制:
当持久化更改的过程变得太繁重时,PersistentStorage实现可能会限制持久化属性更改的频率。
没有给出数据大小限制的具体指标。
Preferences(用户首选项-键值型)
使用场景:应用配置类,单条数据量较小(小于8K),数据量不超过1W条。
支持类型: number、string、boolean、Array、Array、Array类型。
应用级路径(ApplicationContext获取 沙箱路径):
<路径前缀>/<加密等级>/base/preferences
HAP级路径(AbilityStageContext、UIAbilityContext、ExtensionContext):
<路径前缀>/<加密等级>/base/haps/<module-name>/preferences
**存储文件:**XML文件
物理路径:/data/app/el2/100/base/com.example.filedemo/haps/entry/preferences/test
number都是按double存储,保留小数点6位。所以数字存储有精度问题,使用过程中需要考虑。
使用限制:
KVStore(键值型数据库)
distributedKVStore:分布式键值数据库为应用程序提供
不同设备间数据库的分布式协同能力。
场景:
**支持类型:**Uint8Array | string | number | boolean
**存储文件:**db文件 + key文件(加密)
SingleKVStore文件路径:
物理路径:
abilityContext /data/app/el2/100/database/com.example.filedemo/entry/kvdb/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08/single_ver/main
appContext /data/app/el2/100/database/com.example.filedemo/kvdb/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08/single_ver/main
底层也是用的
SQLite
使用SQLite客户端打开,可以看到加密数据。
使用限制:
仅系统应用可用。
RdbStore(关系型数据库)
底层使用
SQLite作为持久化存储引擎,支持SQLite具有的数据库特性,包括但不限于事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句。
场景:业务数据的存储,特别是需要频繁查询的数据。
支持:SQLite 数据类型 | 菜鸟教程 (runoob.com)
使用限制:
WAL模式:每次操作生成
一个命令并
追加写入一个日志中。可用于数据恢复。
fs(写文件)
场景:文件自定义。
小结