HarmonyOS 鸿蒙Next端云一体化云数据库开发实战

HarmonyOS 鸿蒙Next端云一体化云数据库开发实战

技术栈:

  • Appgallery connect
  • 端云一体化

端云一体化的应用场景

为丰富HarmonyOS对云端开发的支持、实现端云联动,DevEco Studio以Cloud Foundation Kit(云开发服务)为底座、在传统的“端开发”基础上新增“云开发”能力,开发者在创建工程时选择合适的云开发工程模板,即可在DevEco Studio内同时完成HarmonyOS应用/元服务的端侧与云侧开发,体验端云一体化协同开发。

端云一体化能为我们做什么

作为移动应用开发,掌握了端云一体化之后,我们就可以实现很多轻量的应用,把之前需要前后端交互的屏障打破,自己一个人就是一个团队,做到真正的敏捷开发。

我们如何使用端云一体化

在系统sdk中已经集成了Cloud Foundation Kit,也就是我们的云开发服务,我们只需要在控制台创建项目,开启我们相关的功能,按照文档说明即可实现开发。

支持直接创建云项目,也可以进行老项目改造为端云一体化项目。

我们选择哪个进行业务开发

我们选择的是云数据库,因为我是安卓开发学习鸿蒙开发,我熟悉sqlite数据库,虽然它也是一个轻量级的数据库,但是它不能进行云端存储,缺少了一定的灵活性,云数据库恰好完善了这一点,这非常重要。

云数据库的使用

我们直接跟随官方的开发文档进行我们云数据库的开发和使用,首先我们打开HarmonyOs的官方开发工具DevecoStudio,我们创建一个云工程,在控制台我们把刚才创建的项目包名进行同步,创建APPID,创建对应的项目。然后我们在DevecoStudio中绑定,这时我们进到控制台,在快速开始栏目选择云开发,我们在云开发中点击开通,这样我们的项目就正式开通了云数据功能了,这里我们还需要注意一点,根据文档来看,云数据库的新增和修改,不能用默认签名,我们还需要创建类似Android中jks文件的东西,我们直接跟随文档创建,创建完成之后改成自签,这时候我们的准备工作就万无一失了。现在我们正式开始云数据库的使用。

打开工程,发现我们项目中现在有Application和Cloudprogram工程,这就是我们的云数据库相关的内容了,我们在cloudprogram工程中objecttype目录下,根据文档说明创建一张表

{
  "objectTypeName": "txt",
  "fields": [
    {"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},
    {"fieldName": "msg", "fieldType": "String"},
    {"fieldName": "txt", "fieldType": "String"}
  ],
  "indexes": [
    {"indexName": "IdIndex", "indexList": [{"fieldName":"id","sortType":"ASC"}]}
  ],
  "permissions": [
    {"role": "World", "rights": ["Read", "Upsert", "Delete"]},
    {"role": "Authenticated", "rights": ["Read", "Upsert", "Delete"]},
    {"role": "Creator", "rights": ["Read", "Upsert", "Delete"]},
    {"role": "Administrator", "rights": ["Read", "Upsert", "Delete"]}
  ]
}

这一步跟我们的sqlite有些类似,我们继续向下。接下来我们要创建数据,我们在detaentry包下给txt表添加数据

{
  "cloudDBZoneName": "default",
  "objectTypeName": "txt",
  "objects": [
    {
      "id": 10,
      "msg": "测试",
      "txt": "哈哈"
    },
    {
      "id": 20,
      "msg": "鸿蒙",
      "txt": "安卓"
    }
  ]
}

可以看到我们写了一些字符串。然后我们还需要进行同步,同步之后就可以进行增删改查了,我们在表创建的时候把增删的权限给了所有人,这里一定要注意,不给的话就需要认证,不然我们无法修改数据,我们开始查询和增删改查数据,在这之前我们还需要生成一个db类

import { cloudDatabase } from '@kit.CloudFoundationKit';

class txt extends cloudDatabase.DatabaseObject {
  public id: number;
  public msg: string;
  public txt: string;
  public naturalbase_ClassName(): string {
    return 'txt';
  }
}

export { txt };

接下来我们新建一个页面,进行增删改查

import { cloudDatabase } from '@kit.CloudFoundationKit';
import { book } from '../CloudDb/book';
import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct TestPage {

  @State message: string = 'Hello World';

  async aboutToAppear(): Promise<void> {
    // 查
    let databaseZone = cloudDatabase.zone('default');
    let condition = new cloudDatabase.DatabaseQuery(txt);
    let listData = await databaseZone.query(condition);
    let json = JSON.stringify(listData)
    hilog.debug(1,`${json}`,"test")
    
    // 增 改
    let s = new txt()
    s.id = 1
    s.msg = '11'
    s.txt = '222'
    let record = await databaseZone.upsert(s);

    // 删
    let ss = new txt();
    ss.id = 3;
    let deleteNum = await databaseZone.delete(ss);
  }
}

后续我们通过一切判断条件,就可以实现所有的应用场景了


更多关于HarmonyOS 鸿蒙Next端云一体化云数据库开发实战的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

鸿蒙Next端云一体化云数据库开发主要使用Cloud DB服务,基于分布式数据管理能力实现端云数据同步。开发流程:

  1. 在AGC控制台创建Cloud DB服务,定义对象类型和存储区
  2. 集成Cloud DB SDK(@ohos/data/clouddb)
  3. 核心接口:
  • 创建云数据库实例:cloudDB.createCloudDBZone
  • 数据操作:executeUpsert/Query/Delete
  1. 数据同步通过订阅zone.onDataChange实现自动更新

关键特性:

  • 支持离线缓存
  • 数据加密传输
  • 冲突自动解决策略
  • 查询性能优化

更多关于HarmonyOS 鸿蒙Next端云一体化云数据库开发实战的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next的端云一体化开发确实为开发者提供了更便捷的云端数据管理能力。从您的实践来看,云数据库的使用流程已经比较清晰,这里补充几点关键注意事项:

  1. 权限管理方面,您当前配置了所有角色都具备完全操作权限,这在开发测试阶段是可行的,但在正式环境中建议根据业务需求细化权限控制,特别是Delete权限需要谨慎分配。

  2. 数据同步机制需要注意,云数据库采用最终一致性模型,端侧数据变更后会有短暂延迟才会同步到云端,开发时需要处理好这种异步特性。

  3. 性能优化方面,建议对频繁查询的数据建立合适的索引,您示例中已经创建了IdIndex,这是很好的实践。

  4. 在数据类型选择上,云数据库支持String/Integer/Boolean等基本类型,但不支持SQLite中的BLOB类型,需要注意数据格式转换。

  5. 错误处理很关键,所有云数据库操作都应添加try-catch块处理网络异常等情况。

从安卓SQLite迁移到云数据库的体验来看,这种开发模式确实大幅简化了数据同步问题,使单开发者也能轻松实现端云数据协同。后续可以继续探索云函数等其他云服务能力,构建更完整的云原生应用。

回到顶部