分布式数据KV数据库之服务接口层 原创

鸿蒙开发
发布于 2023-3-13 15:06
浏览
0收藏

系统KV数据库介绍

系统KV数据库是最基本的分布式数据管理模块,通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同应用的数据进行隔离,保证不同应用之间的数据不能通过分布式数据服务互相访问。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户提供在多种终端设备上最终一致的数据访问体验。
分布式数据服务主要实现用户设备中应用程序数据内容的分布式同步。当设备1上的应用A在分布式数据库中增、删、改数据后,设备2上的应用A也可以获取到该数据库变化。可在分布式图库、信息、通讯录、文件管理器等场景中使用。
KV数据库在层次上可以分为三层,分别是面向应用程序开发的api接口调用层,分布式数据服务组件和sqlite接口层,其中服务组件分为存储组件,同步组件和通信适配层,存储组件最终调用的是sqlite接口。

应用程序通过调用分布式数据服务接口实现分布式数据库创建、访问、订阅功能,服务接 口通过操作服务组件提供的能力,将数据存储至存储组件,存储组件调用同步组件实现将数据 同步,同步组件使用通信适配层将数据同步至远端设备,远端设备通过同步组件接收数据,并 更新至本端存储组件,通过服务接口提供给应用程序使用。
分布式数据KV数据库之服务接口层-鸿蒙开发者社区

1 服务接口层

分布式数据KV数据库之服务接口层-鸿蒙开发者社区
分布式数据服务提供了两种同步方式:手动同步和自动同步。
手动同步是由应用程序调用 sync 接口来触发,需要指定同步的设备列表和同步模式。同 步模式分为 PULL_ONLY(将远端数据拉到本端)、PUSH_ONLY(将本端数据推送到远 端)和 PUSH_PULL(将本端数据推送到远端同时也将远端数据拉取到本端)。
自动同步是由分布式数据库自动将本端数据推送到远端,同时也将远端数据拉取到本端 来完成数据同步,同步时机包括设备上线、应用程序更新数据等,应用不需要主动调用 sync 接口。
分布式数据库根据KVStoreType字段来区分目前包括三种单版本分布式数据库,多版本分布式数据库和设备协同分布式数据库,多版本分布式数据库目前不支持。
单版本分布式数据库是指数据在本地保存是以单个 KV 条目为单位的方式保存,对每个 Key 最多只保存 一个条目项,当数据在本地被用户修改时,不管它是否已经被同步出去,均直接在这个条目上 进行修改。同步也以此为基础,按照它在本地被写入或更改的顺序将当前最新一次修改逐条同 步至远端设备。
设备协同分布式数据库建立在单版本分布式数据库之上,对应用程序存入的 KV 数据中的 Key 前面拼接了本设备的 DeviceID 标识符,这样能保证每个设备产生的数据严格隔离,底层按照设备的维度管理这些数据,设备协同分布式数据库支持以设备的维度查询分布式数据,但是 不支持修改远端设备同步过来的数据。
面向应用层的开发指导文档链接为:https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/database/database-mdds-guidelines.md/
API说明链接为:
https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md/
服务接口层包括JsKVManager和JsKVStore和对KVStore的操作,功能图下所示:

分布式数据KV数据库之服务接口层-鸿蒙开发者社区
getKVStore在接口层流程如下图所示:
分布式数据KV数据库之服务接口层-鸿蒙开发者社区

服务接口层主要类如下图,其中红框中为服务接口层相关类,外围为存储层相关类
分布式数据KV数据库之服务接口层-鸿蒙开发者社区

getKVStore在接口层序列图如下图
分布式数据KV数据库之服务接口层-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
2
收藏
回复
举报
回复
    相关推荐