长期支持版本

    社区创新版本

      分布式数据管理

      分布式数据管理基于分布式软总线,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接。

      分布式数据管理由上游 OpenHarmony 3.2 Release 版本移植而来,目前包含四个组件:

      组件对应openEuler软件包功能介绍
      分布式数据服务(Distributed Data Service)distributeddatamgr_datamgr_service提供不同设备间数据库数据分布式的能力
      键值对数据库(KV store)distributeddatamgr_kv_store为设备应用提供键值对数据管理能力
      关系型数据库(Relational store)distributeddatamgr_relational_store基于关系模型来管理数据的数据库
      分布式数据对象部件(Data object)distributeddatamgr_data_object具备多设备数据同步的面向对象的内存数据管理框架

      更多分布式数据管理介绍,可参考上游 OpenHarmony 文档 “数据管理” 相关章节

      安装

      分布式数据管理在 openEuler-22.03-LTS-SP3 版本已经默认集成,直接安装即可:

      dnf install distributeddatamgr_kv_store distributeddatamgr_relational_store distributeddatamgr_datamgr_service distributeddatamgr_data_object
      

      启动服务

      1. 分布式数据服务可以通过 start_services.sh 脚本来启动。

        /system/bin/start_services.sh datamgr
        
      2. 可以通过 ps 命令查看分布式数据管理服务是否拉起。

        ps -ef | grep distributeddata
        

      使用分布式数据功能

      1. 新建demo运行需要的/data目录。因为OpenHarmony下app运行有指定的目录,需要在openEuler下先新增。

        mkdir -p /data/app/el0/0/database/com.example.distributed.rdb/rdb
        mkdir -p /data/app/el1/0/database/distributeddata/kvdb
        mkdir -p /data/service/el1/public/database/distributeddata/meta
        mkdir -p /data/service/el1/public/database/distributeddata/kvdb
        mkdir -p /data/service/el1/public/database/distributeddata/meta/backup
        
      2. 编写三个数据库kv_store/data_object/relational_store的客户端程序,使用分布式数据功能。

        客户端程序编写可参考仓库每个数据库的 demo 源代码,demo 在这个仓库每个数据库同名目录下的 demo目录下,如kv_store/demo,可使用对应目录下的 build.sh 脚本进行编译。

        注意

        demo 指定的数据 db 路径等,请最好保持和所给示例 demo 的路径一致,否则可能会存在路径不存在或者权限不足问题。

      3. 暂停分布式管理服务 datamgr_service。

        ./stop_services.sh all # 停止所有服务
        ./stop_services.sh datamgr # 停止datamgr一个服务
        

      常见问题

      • 启动各个服务日志一直在报错 Binder Driver died

        原因:说明系统未开启 binder,可以查看 /dev/binder 文件是否存在,如果不存在则说明未开启 binder。

        解决方法:启动binder功能,参考communication_ipc仓库说明开启binder功能。

      • softbus_server 服务未成功起来,报错 GetNetworkIfIp ifName:eth0 fail

        原因:使用命令 ip a 查看当前系统的网卡名称,查看是否有 eth0 有线网卡名。 因为 softbus_server 是通过 eth0 这个有线网卡名来获取 ip 等信息,如果没有 eth0 网卡则无法启动 softbus_server

        解决方法一:修改网卡名称为 eth0

        解决方法二:修改 softbus_server 源码,将依赖的有线网卡名称改成当前系统的网卡名。

      参考

      分布式文件系统架构

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份