更多内容请访问:Harmonyos.51cto.com,与华为官方共同打造的鸿蒙技术社区简介本文基于OpenHarmonyOS3.0LTS讲解分布式数据服务(DistributedDataService,DDS)提供了在不同设备之间分发数据库数据的能力。在架构上,分布式数据服务是开源鸿蒙底层服务的基础服务,与分布式任务调度同层。但是在使用分布式任务调度功能时,基本上还需要数据交互功能来完成完整的分布式功能。因此,在学习分布式任务调度功能的同时,必然要学习分布式数据服务相关的功能和功能。底层服务。写这篇文章的时候,我在调试JSdemo的时候发现了下层方舟JS运行层的bug,提交了一个ISSUE,尝试提交了一个PR。如果运行DEMO时发现问题,请尝试合并以上PR,重新编译所有系统并刷机重试。1.1分布式相关《OpenHarmony 源码解析之分布式任务调度》《OpenHarmony 源码解析之分布式数据库》1.2OpenHarmony架构图2基础知识2.1概述我们先看看Harmony官方开源文档中对分布式数据服务的描述:DistributedDataService(DDS)提供不同设备之间的数据库数据分布式能力.通过组合帐户、应用程序和数据库三元组,分布式数据服务隔离数据。在可信认证设备中,分布式数据服务支持数据相互同步,为用户在各种终端设备上提供一致的数据访问体验。目前开源的鸿蒙还没有集成账号功能,测试时可以自由选择账号,只需要填写一致即可。应用程序和数据库必须保持一致,以便对分布式数据进行完全隔离,并在多个终端设备上提供一致的数据访问体验。2.2源码结构├──BUILD.gn├──figures│├──en-us_image_0000001162536643.png│└──zh-cn_image_0000001162536643.png├──frameworks│├──innerkitsimpl│kdistributedframework─datawork实现...innerkits#内部接口,主要是头文件││├──app_distributeddata│││├──BUILD.gn││└──include││└──distributeddata││├──BUILD.gn││└──包含│└──jskits#JS接口,用于BUILD│└──distributeddata│└──BUILD.gn├──LICENSE├──OAT.xml├──ohos.build├──README.md├──README_zh.md├──services│└──distributeddataservice│├──adapter#适配实现││├──account#账户适配││├──autils#Utility库,包括任务、线程、目录等。││├──broadcaster#发送广播││├──BUILD.gn││├──communicator#通信适配││├──dfx#日志、统计、错误等相关处理││├──include││├──LICENSE││├──permission#权限││├──security#Securityrelated││├──test│└──utils│├──app#用户程序实现│├──libs││└──distributeddb...,多版本KV,SQLITE3等││├──syncer#synchronization││└──test│├──sa_profile│└──test└──test2.3发行版数据服务架构设计图2.4数据同步官方文档是这样描述的:通过调用分布式数据服务接口实现分布式数据库的创建、访问和订阅功能,服务接口通过操作服务组件提供的能力,存储组件调用同步组件同步数据。同步组件通过通信适配层将数据同步到远程设备,远程设备通过同步组件接收数据并更新到本地存储组件。2.5分布式数据最终一致性:是指一个设备成功增删改数据后,网络中的设备可能无法读取到更新后的数据,但网络中设备的数据可以达到一致的状态在某个时间窗口之后。强一致性对分布式数据管理的要求非常高,在分布式服务器场景中可能会遇到。由于移动终端设备的不频繁在线和分散性,分布式数据服务不支持强一致性,只支持最终一致性。目前分布式数据的数据模型只支持KV数据模型,不支持外键、触发器等关系型数据库中的技术点。开源的鸿蒙底层虽然支持基于SQLITE3的关系型数据库,但是不支持分布式数据。当前KV数据模型的局限性:对于设备协同数据库,Key最大支持896Byte,Value最大支持4MB。对于单版本数据库,Key最大支持1KB,Value最大支持4MB。每个程序最多支持同时打开16个DB。KvStore接口目前的流控机制是每秒最大访问1000次,每分钟最大访问10000次。KvManager界面每秒最多可访问50次,每分钟最多可访问500次。2.6前提条件从开源的鸿蒙分布式数据源码可以看出,目前只有手机、可穿戴设备、车载系统(ivi)会搭载,其他更轻的设备可能暂时不支持。或者需要定制定制支持。目前两款标准设备的开源系统鸿蒙都默认集成了该功能,可直接使用。开源鸿蒙的分布式数据如果只在单机上使用,没有前提条件。如果你需要它的分布式功能,那么你需要完成设备之间的联网;联网的前提是完成设备认证。具体步骤参见OpenHarmony源码分析中的分布式任务调度。3编程接口3.1导入模块importdistributedDatafrom'@ohos.data.distributedData';下面大部分接口都有callback和promise两个异步方法。本文以promise方法为例。回调方法类似,请自行参考文档。3.2创建管理器distributedData.createKVManagercreateKVManager(config:KVManagerConfig,callback:AsyncCallback
