背景

我们在开发每一个APP应用时,都需要构建多个服务,包括前端页面,后端服务,服务器和数据库。

特别是涉及到数据这一块,面临的挑战更多,典型的挑战包含本地数据的离线使用、云端与离线数据的一致性、不同终端数据的同步、数据如何安全传输,以及在一些特殊场景下,如何应对短时但集中的大流量,还有如何保证数据的安全可靠,以及数据的备份与恢复等。

这些问题会导致我们的开发工作量巨大,同时还会带来很多技术上的难题,以及与不同人员的沟通与协同等。

HUAWEI AppGallery Connect平台推出的云数据库功能可以很好地帮助我们解决以上技术难题,接下来我们就尝试使用云数据库来构建我们的应用。

云数据库

HUAWEI AppGallery Connect Serverless 构建服务具有免运维、成本低、上线快、跨平台的特点,包括认证服务、云函数、云数据库、云存储、云托管,其中云数据库简称“Cloud DB”,是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理API接口,简单易用的端/云SDK,适用于移动端(HarmonyOS、Android、iOS)、网页(Web)和服务器开发,满足开发者一次开发,多平台部署,有效提高开发效率。在保证数据的可用性、可靠性、一致性以及安全等特性基础上,实现数据在客户端和云端之间的无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同的应用。

Cloud DB采用基于对象模型的数据存储结构,支持多种数据类型,包括简单的字符串、数值以及文本等,并提供基于对象操作的API接口,支持单个或批量操作对象,如新增、修改、删除和查询等。通过对需要关注的数据进行订阅,可自动将发生变化的数据在本地与云端和多设备间进行实时同步。

构建

Cloud DB支持多个平台,包含Android、iOS、Web、快应用等客户端,本次我们以安卓客户端为例来进行构建。

环境搭建

  1. 安装“Android Studio”,并升级至最新版本。
  2. 为保证兼容性,要求最低兼容版本:Android 4.4(API Level 19)。
  3. 集成SDK。

接入Cloud DB

在使用Cloud DB服务之前,我们需要先完成以下准备工作:

    1.注册华为开发者帐号并通过实名认证

    2.打开AppGallery Connect 网站并签署协议

3.协议签署后,即可在AppGallery Connect 上创建项目

  4.在刚刚创建的项目上创建应用

 

5.至此我们的项目和应用都已经创建成功了

启用Cloud DB

在使用Cloud DB之前,我们需要先启用Cloud DB服务

  1. 开通AppGallery Connect认证服务,点击“立即开通” 

    2.华为的认证方式非常丰富,但此次我们只使用到云数据库,所以匿名认证即可

    使用和管理Cloud DB

    现在,我们可以对存储区中的对象类型进行管理,创建、修改、导出和导入等操作。

    1.创建对象类型,我们可以创建字段、索引和数据权限
     

 创建对象类型(类型于mysql中的表)

创建对象字段,对象UserInfo 字段定义如下:

创建对象索引

设置数据权限

 现在我们的云数据库已经创建好了,但在使用前还需要先创建存储区(类似于mysql中的数据库)。

 存储区创建成功后,我们就可以对数据库中的数据进行增删改查等操作了。

 

 

 部署,在项目中集成SDK

云数据库创建完成后,我们就可集成到我们的项目中了。

打开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”等待同步完成。

 导入数据表字段模型

在AppGallery Connect上,我们可以将创建的对象类型导出到本地,再复制到项目中的mode目录下即可直接使用了。

初始化

在添加对象类型文件后,我们就可以使用华为的云数据库进行应用开发了,首先初始化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具有以下优点:

  1. 极简开发,多平台SDK支持,目前支持Anroid,IOS,JS,快应用等
  2. 端云数据实时同步、多设备数据协同以及离线数据可用的能力,轻松实现多端数据协同
  3. 提供通信、应用、用户三重认证,数据加密存储,事务管理等
  4. 无需运维,不再需要关注数据的管理,安全,维护等,同时可按使用量进行计价
  5. 按需弹性伸缩,支持数据库高并发,我们只聚焦业务开发即可
  6. 无需开发者特殊处理,即可实现应用离线可用功能
  7. 支持丰富的数据类型,基本类型、文本、数据、日期等
  8. Cloud DB作为HUAWEI AppGallery Connect服务的一部分可跟其他服务完美接入,包括Serverless、认证、众测、质量等
  9. 开发者社区已经十分成熟,开发文档,示例DEMO等资料都很齐全

其他相同产品对比:

 

 通过与其他产品对比可发现HUAWEI AppGallery Connect Cloud DB无论是在产品特性上还是在收费标准上都更有优势。

总结

正如本文所述,HUAWEI AppGallery Connect Cloud DB是一款端云协同的数据库产品,在数据安全,多端数据同步,事务处理,多SDK支持,弹性伸缩,可扩展,跨平台方面的优势,都极大地减轻了我们开发者的工作量。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐