分布式数据存储
-
鸿蒙分布式数据服务(Distributed Data Service,DDS)为应用程序提供了不同设备间数据分布存储能力。
-
应用可以通过调用分布式数据存储接口,将数据保存到分布式数据库中,分布数据服务底层实现数据的分布存储和同步,上层实现对分布式应用的统一支持。
-
在分布式数据存储中,可信认证的设备间支持数据的相互同步,为用户在多种终端设备上提供一致的数据访问体验。不同的账号和应用之间可以实现数据隔离,保障数据安全。
-
系统底层通信组件具有设备发现、认证等能力,分布式数据服务可以在设备间建立数据传输通道。
-
数据同步能力。系统支持手动和自动两种同步方式。手动同步由应用调用接口触发,自动同步由分布式数据库自动触发。
-
鸿蒙分布式数据存储提供了分布式数据库事务能力。一个事务中的操作要么全部执行成功,要么都不执行。在分布式场景下,鸿蒙分布式数据存储可以保障多个设备上执行的事务的原子性。
-
鸿蒙分布式数据存储提供了数据冲突解决、备份和恢复能力。
-
分布式数据存储体系
-
分布式数据存储体系主要包含五个部分:
-
- 服务接口:应用开发提供的访问接口,基于KV数据模型提供了一系列的数据存储接口,如创建库、读写数据、订阅等。
- 服务组件:服务组件负责服务内元数据的存储、权限管理、加密管理、备份和回复管理及多用户管理等,同时负责对底层分布式数据的存储组件、同步组件和通信适配层进行初始化等
- 存储组件:主要用于数据存储,负责数据访问、事务、加密及数据合并和解决冲突等。
- 同步组件:主要功能是保障分布设备间的分布式数据的一致性,它是存储组件与通信适配层的桥梁。
- 通信适配层:主要功能是适配底层通信,调用底层通信接口完成通信。通信适配层负责维护设备链接、设备上下线信息等,上层可调用通信适配层的接口完成数据跨设备的通信。
分布式数据库类型
-
分为单版本分布式数据库和设备协同分布式数据库:
-
单版本分布式数据库是指数据在本地保存是以单个KV条目为单位的方式保存,对每个Key最多只保存一个条目项,当数据在本地被用户修改时,不管它是否已经被同步出去,均直接在这个条目上进行修改。同步也以此为基础,按照它在本地被写入或更改的顺序将当前最新一次修改逐条同步至远端设备。
-
设备协同分布式数据库建立在单版本分布式数据库之上,对应用程序存入的KV数据中的Key前面拼接了本设备的DeviceID标识符,这样能保证每个设备产生的数据严格隔离,底层按照设备的维度管理这些数据,设备协同分布式数据库支持以设备的维度查询分布式数据,但是不支持修改远端设备同步过来的数据。
分布式数据库同步
分布式数据服务提供了两种同步方式:手动同步和自动同步:
-
手动同步:由应用程序调用sync接口来触发,需要指定同步的设备列表和同步模式。同步模式分为PULL_ONLY(将远端数据拉到本端)、PUSH_ONLY(将本端数据推送到远端)和PUSH_PULL(将本端数据推送到远端同时也将远端数据拉取到本端)。内部接口支持按条件过滤同步,将符合条件的数据同步到远端。
-
自动同步:包括全量同步和按条件订阅同步。全量同步由分布式数据库自动将本端数据推送到远端,同时也将远端数据拉取到本端来完成数据同步,同步时机包括设备上线、应用程序更新数据等,应用不需要主动调用sync接口;内部接口支持按条件订阅同步,将远端符合订阅条件的数据自动同步到本端。
-
约束和限制
-
分布式数据对象只能在跨端迁移和通过跨设备Call调用实现的多端协同场景中使用。
-
不同设备间只有相同bundleName的应用才能直接同步。
-
分布式数据对象的数据同步发生在同一个应用程序下,且同sessionID之间。
-
不建议创建过多的分布式数据对象,每个分布式数据对象将占用100-150KB内存。
-
每个分布式数据对象大小不超过500KB。
-
设备A修改1KB数据,设备B收到变更通知,50ms内完成。
-
单个应用程序最多只能创建16个分布式数据对象实例。
-
考虑到性能和用户体验,最多不超过3个设备进行数据协同。
-
如对复杂类型的数据进行修改,仅支持修改根属性,暂不支持下级属性修改。资产同步机制)中,资产类型的数据支持下一级属性修改。,资产类型的数据支持下一级属性修改。
-
支持JS接口间的互通,与其他语言不互通。
2、接口说明
-
- 分布式数据对象
- 导入模块
import { distributedDataObject } from '@kit.ArkData';
- 创建分布式数据对象
create(context: Context, source: object): DataObject
-
参数
-
返回值
更多相关能力可以去官网查看
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-distributedobject-V5
- 分布式键值库
- 导入模块
import { distributedKVStore } from '@kit.ArkData';
-
KVManager
KVManager主要功能是对分布式数据库进行管理,包括数据库的创建、打开、关闭、删除等,该类提供的主要管理数据库的接口。
-
KVStore
KVStore类是分布式数据存储类,主要功能是对数据库中的数据内容进行管理,包括数据的添加、删除、修改、查询、订阅、同步等。
-
SingleKVStore
KVStore类的子类SingleKVStore提供的主要方法
SingleKvStore为单一版本数据库,该类型分布式数据库按照时间顺序更新版本。
DeviceKvStore为设备分布式数据库,该类型的数据库,应用仅仅修改本地设备创建的数据,对从远程设备同步到本地的数据没有修改权限。