华为 AppGallery Connect云数据库到底有多牛?
点击“开发者技术前线”,选择“星标” 让一部分开发者看到未来
我们在开发每一个 APP 应用时,都需要构建多个服务,包括前端页面,后端服务,服务器和数据库。
特别是涉及到数据这一块,面临的挑战更多,典型的挑战包含本地数据的离线使用、云端与离线数据的一致性、不同终端数据的同步、数据如何安全传输,以及在一些特殊场景下,如何应对短时但集中的大流量,还有如何保证数据的安全可靠,以及数据的备份与恢复等。
这些问题会导致我们的开发工作量巨大,同时还会带来很多技术上的难题,以及与不同人员的沟通与协同等。
HUAWEI AppGallery Connect 平台推出的云数据库功能可以很好地帮助我们解决以上技术难题,接下来我们就尝试使用云数据库来构建我们的应用。
HUAWEI AppGallery Connect Serverless 构建服务具有免运维、成本低、上线快、跨平台的特点,包括认证服务、云函数、云数据库、云存储、云托管,其中云数据库简称“Cloud DB”,是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理 API 接口,简单易用的端 / 云 SDK,适用于移动端(HarmonyOS、Android、iOS)、网页(Web)和服务器开发,满足开发者一次开发,多平台部署,有效提高开发效率。在保证数据的可用性、可靠性、一致性以及安全等特性基础上,实现数据在客户端和云端之间的无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同的应用。
Cloud DB 采用基于对象模型的数据存储结构,支持多种数据类型,包括简单的字符串、数值以及文本等,并提供基于对象操作的 API 接口,支持单个或批量操作对象,如新增、修改、删除和查询等。通过对需要关注的数据进行订阅,可自动将发生变化的数据在本地与云端和多设备间进行实时同步。
Cloud DB 支持多个平台,包含 Android、iOS、Web、快应用等客户端,本次我们以安卓客户端为例来进行构建。
安装“Android Studio”,并升级至最新版本。
为保证兼容性,要求最低兼容版本:Android 4.4(API Level 19)
集成 SDK。
注册华为开发者帐号并通过实名认证
打开 AppGallery Connect 网站并签署协议
5. 至此我们的项目和应用都已经创建成功了
在使用 Cloud DB 之前,我们需要先启用 Cloud DB 服务
开通 AppGallery Connect 认证服务,点击“立即开通”
现在,我们可以对存储区中的对象类型进行管理,创建、修改、导出和导入等操作。
创建对象类型,我们可以创建字段、索引和数据权限
创建对象类型(类型于 mysql 中的表)
创建对象字段,对象 UserInfo 字段定义如下:
创建对象索引
设置数据权限
3. 存储区创建成功后,我们就可以对数据库中的数据进行增删改查等操作了
云数据库创建完成后,我们就可集成到我们的项目中了。
打开 AppGallery Connect 网站找到我们创建的项目,在“项目设置”页面下载配置文件“agconnect-services.json”到本机
将下载的 agconnect-services.json 添加到我们的 Android 项目中
打开项目根目录下的 build.gradle 文件,配置华为 maven 仓库和插件地址
注意:Gradle 7.0 版本后,“allprojects > repositories”配置已迁移到项目级“settings.gradle”文件中。
Gradle 7.0 之前版本在 build.gradle 文件里设置 (allprojects ->repositories)
打开项目 app 目录下的 build.gradle 文件,添加 agcp 插件配置和数据库依赖, 如使用 AppGallery Connect 的其他服务也需在此添加信赖
所有配置修改完成后,右上方出现“Sync Now”链接,点击“Sync Now”等待同步完成。
在添加对象类型文件后,我们就可以使用华为的云数据库进行应用开发了,首先初始化 AGConnectCloudDB、并创建 Cloud DB zone 和对象类型。
通过 getInstance()方法获取 AGConnectCloudDB 实例,并使用 createObjectType()创建对象类型。
创建 Cloud DB zone 配置对象后,即可访问 Cloud DB 数据库。
通过调用 AGConnectCloudDB 实例的 executeUpsert () 可实现数据的写入,如果云数据库中已经存在主键相同的对象,则更新,否则写入一个新的对象。
通过调用 executeQuery()、addOnSuccessListener() 和 addOnFailureListener() 方法组合,实现异步方式查询数据。
Cloud DB 支持丰富的功能供我们对数据进行操作,包含条件查 (where),排序 (orderByAsc,orderByDesc),限定返回结果集对象数量 (limit) 等功能,我们只需要调用 SDK 指定的方法和参数即可。
通过调用 executeDelete 方法可删除指定的对象数据。
通过注册数据变化侦听器,我们可以很方便的对云端和本地数据进行数据同步具体方法:通过查询条件与 subscribeSnapshot() 方法组合使用,可以指定侦听对象,当侦听对象的数据发生变化时,应用端会收到通知,根据快照获取变化的数据信息,从云侧同步数据至应用端侧应用。注意:数据同步模式需为缓存模式。
使用 runTransaction() 方法,Cloud DB 可以支持事件操作,事务是原子的,一个事务内的所有操作要么全部执行成功,要么全部执行失败。如果执行事务时出现并发写入,Cloud DB 会再次尝试执行整个事务,确保整个事务操作的一致性。注意:事务操作需要 Cloud DB 的数据同步模式为缓存模式。
Cloud DB 还提供了对通信、应用、用户提供隐私或者敏感数据的全程加密管理。该功能开启后,用户数据将在应用端进行加密,然后以密文形式发送并存储到云侧,只有用户依据其输入的密码获取密钥信息后才能访问自己的加密数据。只有用户自己才能访问自己的数据,应用端和云数据库都无法访问, 有效提高了用户数据的安全性,杜绝了用户数据在云端泄露的风险。
以上,我们通过华为 SDK 提供的几个方法,就完成了对云数据库的访问,数据的增删除改查等操作,同时也完成了离线数据,多端数据同步,数据安全与事务等众多功能
通过以上示例,我们可以得到 Cloud DB 具有以下优点:
极简开发,多平台 SDK 支持,目前支持 Anroid,IOS,JS, 快应用等
端云数据实时同步、多设备数据协同以及离线数据可用的能力,轻松实现多端数据协同
提供通信、应用、用户三重认证,数据加密存储,事务管理等
无需运维,不再需要关注数据的管理,安全,维护等,同时可按使用量进行计价
按需弹性伸缩,支持数据库高并发,我们只聚焦业务开发即可
无需要开发者特殊处理,即可实现应用离线可用功能
支持丰富的数据类型,基本类型、文本、数据、日期等
Cloud DB 作为 HUAWEI AppGallery Connect 服务的一部分可跟其他服务完美接入,包括 Serverless、认证、众测、质量等
开发者社区已经十分成熟,开发文档,示例 DEMO 等资料都很齐全
其他相同产品对比:
通过与其他产品对比可发现 HUAWEI AppGallery ConnectCloud DB 无论是在产品特性上还是在收费标准上都更有优势。
正如本文所述,HUAWEI AppGallery Connect Cloud DB 是一款端云协同的数据库产品,在数据安全,多端数据同步,事务处理,多 SDK 支持,弹性伸缩,可扩展,跨平台方面的优势,都极大地减轻了我们开发者的工作量。