分布式数据管理
分布式数据管理基于分布式软总线,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接。
分布式数据管理由上游 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-SP4 版本已经默认集成,直接安装即可:
dnf install distributeddatamgr_kv_store distributeddatamgr_relational_store distributeddatamgr_datamgr_service distributeddatamgr_data_object
启动服务
分布式数据服务可以通过 start_services.sh 脚本来启动。
/system/bin/start_services.sh datamgr
可以通过 ps 命令查看分布式数据管理服务是否拉起。
ps -ef | grep distributeddata
使用分布式数据功能
新建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
编写三个数据库
kv_store/data_object/relational_store
的客户端程序,使用分布式数据功能。客户端程序编写可参考仓库每个数据库的 demo 源代码,demo 在这个仓库每个数据库同名目录下的 demo目录下,如
kv_store/demo
,可使用对应目录下的 build.sh 脚本进行编译。注意
demo 指定的数据 db 路径等,请最好保持和所给示例 demo 的路径一致,否则可能会存在路径不存在或者权限不足问题。
暂停分布式管理服务 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
源码,将依赖的有线网卡名称改成当前系统的网卡名。