0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS开发实例:【分布式数据服务】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-18 10:18 次阅读

介绍

分布式数据服务(Distributed Data Service,DDS)为应用程序提供不同设备间数据分布式的能力。通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和分布式数据服务对属于不同的应用的数据进行隔离,保证不同应用之间的数据不能通过分布式数据服务互相访问。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户提供在多种终端设备上一致的数据访问体验。效果图如下:

图 1 []()

搭建OpenHarmony环境

完成本篇Codelab我们首先要完成开发环境的搭建,本示例以Hi3516DV300开发板为例,参照以下步骤进行:

  1. [获取OpenHarmony系统版本]:标准系统解决方案(二进制)
    以3.0版本为例:
  2. 搭建烧录环境
    1. [完成DevEco Device Tool的安装]
    2. [完成Hi3516开发板的烧录]
    3. 鸿蒙开发指导参考:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md](
  3. 搭建开发环境
    1. 开始前请参考[工具准备],完成DevEco Studio的安装和开发环境配置。
    2. 开发环境配置完成后,请参考[使用工程向导]创建工程(模板选择“Empty Ability”),选择JS或者eTS语言开发。
    3. 工程创建完成后,选择使用[真机进行调测]。

搜狗高速浏览器截图20240326151450.png

代码结构解读

本篇Codelab只对核心代码进行讲解,对于完整代码,我们会在最后的参考中提供下载方式,接下来我们来讲解整个工程的代码结构:

  • pages:用于存放所有页面的目录。
    • index:构成关系型数据库操作界面,包括index.hml布局文件,index.css样式文件,index.js逻辑处理文件。
    • KvStoreModel.js:创建分布式数据库,以及提供表格数据的增、删、改、查API接口。
  • config.json:配置文件。

分布式组网

  1. 硬件准备:准备两台烧录相同的版本系统的Hi3516DV300开发板A,B。

  2. 两个开发板A,B配置在同一个WiFi网络之下。
    打开设置-->WLAN-->点击右侧WiFi开关-->点击目标WiFi并输入密码。

  3. 将设备A,B设置为互相信任的设备。

    • 找到系统应用“音乐”。

    • 设备A打开音乐,点击左下角流转按钮,弹出列表框,在列表中会展示远端设备的id。
    • 选择远端设备B的id,另一台开发板(设备B)会弹出验证的选项框。
    • 设备B点击允许,设备B将会弹出随机PIN码,将设备B的PIN码输入到设备A的PIN码填入框中。


    配网完毕。

创建分布式数据库

  1. 导入模块
    import distributedData from '@ohos.data.distributeddata';
    
  2. 参考分布式数据库[接口],在kvStoreModel类中定义KvManager和KvStore变量,并通过createKVManager创建分布式数据库管理对象KvManager,通过getKVStore获取数据库操作实例KvStore。其中config表示创建KVManager实例的配置信息,包括调用方的包名和用户信息。options表示创建 KvStore实例的配置信息。表示示例代码如下:
export default class KvStoreModel {
    kvManager;
    kvStore;
    constructor() {
    }
    createKvStore(callback) {
      if (typeof (this.kvStore) === 'undefined') {
        //创建KVManager实例的配置信息
        var config = {
          bundleName: 'com.ohos.distributedmusicplayer',
          userInfo: {
            userId: '0',
            userType: 0
          }
        };
        let self = this;
        distributedData.createKVManager(config).then((manager) = > {
          self.kvManager = manager;
          //创建 KvStore实例的配置信息
          var options = {
            createIfMissing: true,
            encrypt: false,
            backup: false,
            autoSync: true,
            kvStoreType: 1,
            schema: '',
            securityLevel: 3,
          };
          self.kvManager.getKVStore(STORE_ID, options).then((store) = > {
            self.kvStore = store;
            callback();
          });
        });
      } else {
        callback();
      }
    }
}

操作分布式数据方法

创建分布式数据库后,获得一个KvStore,通过KvStore调用相关接口执行相关的数据操作,结果以Promise形式返回。

  • 添加键值对到数据库:使用put()方法,该方法接收两个参数,分别是要添加的数值Key和要添加的数值。示例代码如下:
    put(key, value) {
      this.kvStore.put(key, value).then((data) = > {
    	this.kvStore.get(key).then((data) = > {
    	});
      }).catch((err) = > {
      });
    }
    
  • 数据库中删除指定键值对的数据:使用delete()方法,该方法接收一个参数,需要删除数据的键值key,结果以Promise形式返回。示例代码如下:
    delete(key) {
      this.kvStore.delete(key).then((data) = > {
      }).catch((err) = > {
      });
    }
    
  • 数据库中获取指定键值对的数据:使用get()方法,该方法接收两个参数,分别是需要获取数据的键值key和返回函数callback,结果以callback函数形式返回。示例代码如下:
    get(key,callback){
      this.kvStore.get(key).then((data) = > {
           callback(data);
      });
    }
    

同步分布式数据库

通常情况下,当数据库的数据产生变化时,需要主动通知与该数据相关联的进程或者应用,从而使得相关进程或者应用接收到数据变化后完成相应的处理。对于数据提供方,当数据库数据变化,可以通过如下方法通知数据订阅者:

broadcastMessage(key, value) {
  let self = this;
  this.createKvStore(() = > {
	self.put(key, value);//self.delete(key)新增或者删除数据都可导致数据变化
  });
}

对于数据接收方,可以通过KvStore提供的[on]方法注册一个数据订阅者。示例代码如下:

setOnMessageReceivedListener(callback) {
  let self = this;
  this.createKvStore(() = > {
	self.kvStore.on('dataChange', 1, (data) = > {
	  for (var i = 0; i < data.insertEntries.length; i++) {
		callback(data.insertEntries[0].key, data.insertEntries[0].value.value, 0);
		return;
	  }
	  for (i = 0; i < data.updateEntries.length; i++) {
		callback(data.updateEntries[0].key, data.updateEntries[0].value.value, 1);
		return;
	  }
	  for (i = 0; i < data.deleteEntries.length; i++) {
		callback(data.deleteEntries[0].key, '', 2);
		return;
	  }
	});
  });
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分布式数据
    +关注

    关注

    0

    文章

    8

    浏览量

    8902
  • 鸿蒙
    +关注

    关注

    55

    文章

    1651

    浏览量

    42128
  • HarmonyOS
    +关注

    关注

    79

    文章

    1864

    浏览量

    29271
  • OpenHarmony
    +关注

    关注

    23

    文章

    3328

    浏览量

    15167
收藏 人收藏

    评论

    相关推荐

    HarmonyOS应用开发-分布式任务调度

    1. 介绍本篇CodeLab将实现的内容HarmonyOS是面向全场景多终端的分布式操作系统,使得应用程序的开发打破了智能终端互通的性能和数据壁垒,业务逻辑原子化
    发表于 09-18 09:21

    HarmonyOS应用开发-分布式设计

    设计理念HarmonyOS 是面向未来全场景智慧生活方式的分布式操作系统。对消费者而言,HarmonyOS 将生活场景中的各类终端进行能力整合,形成“One Super Device”,以实现
    发表于 09-22 17:11

    HarmonyOS分布式数据库,为啥这么牛?

    开发者无需关注索引引擎实现;业务通过一套接口调用,就可以建立起应用内的索引,同时系统还具备强大的搜索服务,提供了丰富的检索接口。 03 出色的性能表现 除了实现基础功能,HarmonyOS
    发表于 11-19 15:38

    HarmonyOS分布式——跨设备迁移

    HarmonyOS分布式——跨设备迁移
    发表于 06-26 14:34

    【木棉花】分布式数据

    是这样的:“通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同的应用的数据进行隔离,保证不同应用之间的数据不能通过
    发表于 09-05 10:43

    HarmonyOS教程—分布式运动健康应用(智能穿戴端)

    的健康数据,并写入到分布式数据库中,我们会在第七小节详细说明如何实现。最后是初始化分布式数据服务initDbManager(),有关分布式数据
    发表于 09-06 11:39

    HarmonyOS原子化服务卡片开发-分布式体验学习

    1.原子化服务流转在HarmonyOS中泛指涉及多端的分布式操作。流转能力打破设备界限,多设备联动,使用户应用程序可分可合、可流转,实现如邮件跨设备编辑、多设备协同健身、多屏游戏等分布式
    发表于 09-07 09:38

    HarmonyOS教程—基于分布式数据接口,实现多种设备上一致的数据访问体验

    1. 如何使用分布式数据库介绍分布式数据服务(Distributed Data Service,DDS) 为应用程序提供不同设备间数据数据
    发表于 09-26 11:40

    HarmonyOS分布式应用框架深入解读

    着,一般默默地为开发者和用户服务。基础服务层:包括分布式调度管理、分布式数据管理、
    发表于 11-22 15:15

    HDC2021技术分论坛:如何高效完成HarmonyOS分布式应用测试?

    作者:liuxun,HarmonyOS测试架构师HarmonyOS是新一代的智能终端操作系统,给开发者提供了设备发现、设备连接、跨设备调用等丰富的分布式API。随着越来越多的
    发表于 12-13 14:55

    如何高效完成HarmonyOS分布式应用测试?

    作者:liuxun,HarmonyOS测试架构师HarmonyOS是新一代的智能终端操作系统,给开发者提供了设备发现、设备连接、跨设备调用等丰富的分布式API。随着越来越多的
    发表于 12-13 18:07

    HarmonyOS应用开发-EducationSystem分布式亲子早教系统体验

    HarmonyOS应用程序开发,多屏协作交互和分布式跨设备传输的经验。 • 从项目创建、代码编写到编译、构造、部署和操作。二、效果图:完整代码地址:https://gitee.com/jltfcloudcn/jump_to/tr
    发表于 07-25 10:23

    HarmonyOS应用开发-分布式语音摄像头体验

    一、组件说明使用HarmonyOS分布式文件系统和AI语音识别功能开发了一个分布式语音摄像头。使用此相机应用程序,同一分布式网络下的不同设备
    发表于 08-24 15:06

    基于鸿蒙分布式数据服务开发的聊天室应用

       之前给大家介绍过《HarmonyOS 分布式之仿抖音应用》,此次给大家介绍一下基于鸿蒙分布式数据服务开发的聊天室应用,模拟现实中的聊天
    的头像 发表于 11-15 09:32 1501次阅读

    基于鸿蒙分布式数据服务开发的聊天室应用

       之前给大家介绍过《HarmonyOS 分布式之仿抖音应用》,此次给大家介绍一下基于鸿蒙分布式数据服务开发的聊天室应用,模拟现实中的聊天
    的头像 发表于 12-03 10:35 7335次阅读