当前位置: 首页 > news >正文

用鸿蒙打造真正的跨设备数据库:从零实现分布式存储

在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 摘要
    • 引言
  • 鸿蒙分布式数据库开发全流程
    • 导入和初始化分布式数据库
      • 添加依赖
      • 初始化数据库
    • 数据的基本操作:增删改查
      • 插入数据
      • 查询数据
    • 应用场景举例
      • 家庭账本 App:多个设备实时同步账目
      • 校园点名系统:老师和学生设备共享考勤信息
      • IoT家庭场景:设备间共享状态数据
    • QA 环节:常见问题答疑
    • Q1:分布式数据库需要联网吗?
    • Q2:如何确保数据同步成功?
    • Q3:不同设备是否需要权限声明?
    • Q4:可否对分布式数据库加密?
    • 总结

摘要

在设备之间数据联动的时代,鸿蒙系统提供了强大的分布式能力,尤其是分布式数据库(Distributed RDB),可以帮助我们在多个设备间共享和同步数据。你可以在一台手机上存数据,另一台平板直接读取——就像它们共享了同一个数据库一样。

这篇文章就会带你一步一步上手鸿蒙中的分布式数据库,包括如何配置、初始化、增删改查操作,以及如何实现设备间的数据同步。还会提供两个实战场景演示,最后通过问答环节解决你开发中可能遇到的问题。

引言

随着鸿蒙系统的持续发展,它提出的“分布式软总线”理念也在实际开发中发挥了越来越大的作用。尤其是在多设备协同办公、家庭设备数据互通、IoT设备同步控制等方面,分布式数据库成为了连接多端的纽带。

例如,一款笔记软件可以在手机记录内容后自动同步到平板或电视上继续阅读;一个家庭记账 App 能让每个家庭成员的设备实时同步账单信息。听起来像云同步?但鸿蒙是原生设备直连的数据同步,速度快、成本低、体验好。

鸿蒙分布式数据库开发全流程

导入和初始化分布式数据库

添加依赖

entry/build.gradle 文件中加入如下模块依赖(仅供参考):

dependencies {implementation 'ohos:data-distributed'
}

初始化数据库

通过 DatabaseHelper 创建分布式数据库,并设置 Options 指定 setDistributed(true)

import ohos.data.DatabaseHelper;
import ohos.data.distributed.common.Options;
import ohos.data.rdb.ValuesBucket;
import ohos.data.rdb.RdbPredicates;
import ohos.data.distributed.user.RdbDistributedStore;DatabaseHelper helper = new DatabaseHelper(this);// 设置为分布式数据库
Options options = new Options.Builder().setDistributed(true).build();// 获取数据库实例
RdbDistributedStore store = helper.getRdbDistributedStore("MyDistributedDB", options, null);// 创建表
store.executeSql("CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT)");

数据的基本操作:增删改查

插入数据

ValuesBucket values = new ValuesBucket();
values.putInteger("id", 1);
values.putString("name", "张三");store.insert("user", values);

查询数据

RdbPredicates predicates = new RdbPredicates("user");
ResultSet resultSet = store.query(predicates, null);  // 查询所有字段while (resultSet.goToNextRow()) {int id = resultSet.getInt(resultSet.getColumnIndexForName("id"));String name = resultSet.getString(resultSet.getColumnIndexForName("name"));HiLog.info(LABEL_LOG, "用户ID: %{public}d, 姓名: %{public}s", id, name);
}
resultSet.close();

应用场景举例

家庭账本 App:多个设备实时同步账目

场景:父亲在手机上记了一笔支出,儿子在平板上几秒钟后就能看到这条记录。

// 添加一条消费记录
ValuesBucket expense = new ValuesBucket();
expense.putInteger("id", 1001);
expense.putString("name", "超市购物");store.insert("user", expense);

设备之间自动同步,无需手动操作或云服务支持。只要它们在同一鸿蒙分布式网络下,数据就能共享。

校园点名系统:老师和学生设备共享考勤信息

场景:老师在课堂用手机记录学生签到信息,系统会自动同步到教务办公室的鸿蒙平板。

store.executeSql("CREATE TABLE IF NOT EXISTS attendance (stu_id INTEGER, status TEXT)");ValuesBucket row = new ValuesBucket();
row.putInteger("stu_id", 202306);
row.putString("status", "出勤");store.insert("attendance", row);

IoT家庭场景:设备间共享状态数据

场景:智能空调把当前温度写入分布式数据库,智能窗帘读取这个数据决定是否开启。

store.executeSql("CREATE TABLE IF NOT EXISTS home_status (device TEXT, value TEXT)");ValuesBucket temp = new ValuesBucket();
temp.putString("device", "temperatureSensor");
temp.putString("value", "28");store.insert("home_status", temp);

QA 环节:常见问题答疑

Q1:分布式数据库需要联网吗?

不需要依赖互联网,但设备之间需要通过鸿蒙的分布式软总线连接在同一局域网或近场通信环境中。

Q2:如何确保数据同步成功?

使用 KvManager 等模块可监听数据同步事件,确保同步完成后再进行业务操作。

Q3:不同设备是否需要权限声明?

是的,需要声明分布式相关权限,如:

<uses-permission ohos:name="ohos.permission.DISTRIBUTED_DATASYNC" />

Q4:可否对分布式数据库加密?

目前 RDB 本身支持加密,但分布式场景需要额外的安全控制,可以配合 DataEncryptionUtils 等工具。

总结

鸿蒙的分布式数据库功能,为开发者打开了多设备数据互通的新大门。相比传统的云端存储方案,它更快速、更私密、更适合本地设备联动场景。

无论你是做多端协同办公、智能家居,还是教育、医疗等应用场景,都可以考虑利用鸿蒙原生的分布式数据库功能,把数据真正“跑”起来,跑到用户每一个设备上。

下一步,你可以试着将已有的单机数据模型升级成分布式结构,再配合 分布式 UI多设备协同 等特性,打造完整的分布式体验。

http://www.lqws.cn/news/560413.html

相关文章:

  • 【AI智能体】Dify 核心组件从使用到实战操作详解
  • 信号处理学习——文献精读与code复现之TFN——嵌入时频变换的可解释神经网络(上)
  • 数据湖 vs 数据仓库:数据界的“自来水厂”与“瓶装水厂”?
  • 阿里 Qwen3 模型更新,吉卜力风格get
  • 对话式数据分析与Text2SQL Agent产品可行性分析思考
  • 安卓中静态和动态添加子 View 到容器
  • Zotero 7 插件:翻译与护眼主题
  • 如何快速学习一门新编程语言
  • 使用asyncio构建高性能网络爬虫
  • Vue 项目中 Excel 导入导出功能笔记
  • 开疆智能CCLinkIE转ModbusTCP网关连接傲博机器人配置案例
  • 道路交通标志检测数据集-智能地图与导航 交通监控与执法 智慧城市交通管理-2,000 张图像
  • 鸿蒙5:ArkTS基本介绍
  • Ubuntu20.04离线安装Realtek b852无线网卡驱动
  • Note2.2 机器学习训练技巧:Batch and Momentum(Machine Learning by Hung-yi Lee)
  • vue-29(创建 Nuxt.js 项目)
  • 创客匠人视角:创始人 IP 打造为何成为知识变现的核心竞争力
  • electron中显示echarts
  • 微机系统 第八章 模拟接口
  • Windows 合并多个txt到一个txt文件中 (txt文件的合并与拆分)
  • 【Go语言-Day 10】深入指针应用:解锁函数“引用传递”与内存分配的秘密
  • 如何让ChatGPT模仿人类写作,降低AIGC率?
  • 设计模式-代理模式、装饰者模式
  • [Java 基础]LinkedList
  • 告别脚本!用浏览器为 AWS CLI 实现真正的 Cognito 单点登录
  • 基于Spring Boot的网上购物平台设计与实现
  • 【软考--软件设计师】10.2 关系型数据库
  • 网络安全体系结构和安全防护
  • Linux内核网络协议栈深度解析:面向连接的INET套接字实现
  • 【AI实践】Mac一天熟悉AI模型智能体应用(百炼版)