【AGC】构建服务4-云数据库示例

前言:上一次笔者给大家带来了AGC领域的认证服务的学习。这次我们再继续深化学习AGC的相关知识。在文章开始之前,再给读者简单介绍一下AGC,以免第一次来的读者不了解。所谓AGC就是AppGallery Connect的简称,为用户的应用进行创意、开发、分发、运营、经营各环节提供一站式服务,说的通俗一点,就是给用户在华为应用市场上架运营应用提供全面的服务。

全部的AGC相关的知识分为两大类,一大类即上架相关,这个可以参考链接:https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-overview-0000001100246618。里面提供了像是应用测试、应用发布、应用管理、应用维护等应用市场相关的内容。另一大类则是为开发者提供了各种帮助Kit,这个可以参考链接:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-introduction-0000001057492641。里面提供了像是云存储、A/B测试、质量分析、华为云等Kit,为开发者提供额外的帮助,辅助开发者更好的完成应用上架、提高应用质量、增加用户粘性等。

由于AGC全部的内容太多了,所以每一次的学习我们尽量讲其中一点,讲得详细一点。这一次我们来学习构建服务的云数据库的功能。这个功能是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力。在保证数据的可用性、可靠性、一致性,以及安全等特性基础上,能够实现数据在客户端和云端之间的无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同的应用。同时,Cloud DB作为AppGallery Connect解决方案的一部分,为AppGallery Connect平台构建了MBaaSMobile Backend as a Service,移动后端即服务)能力。从而让应用开发者聚焦于应用本身的业务,极大的提升开发者的生产效率。

云数据库的主要功能:1、灵活的同步模式,支持缓存和本地两种数据同步模式。在缓存模式下,端侧数据是云侧数据的子集,如果允许持久化,查询的结果将会自动缓存至端侧;本地模式下,数据只存储在本地,不和云侧数据进行同步。2、强大的查询能力,支持丰富的谓词查询,可以包含多个链式过滤条件,可以将过滤和排序或者限定返回结果集对象数量功能结合使用。在缓存模式下,可以指定从云侧存储区或者本地存储区查询数据;在本地模式下,直接从本地存储区查询数据。3、实时更新,在缓存模式下,您可以通过对需要关注的数据进行侦听,并利用Cloud DB的数据同步功能,将发生变化的数据在端云、多设备间进行实时更新。4、离线支持,在缓存模式下,如果允许缓存持久化,当设备离线时,应用对云端数据库的查询会默认转为从本地查询。当设备恢复在线状态时,Cloud DB会将所有本地写入的数据自动同步至云端数据库。5、扩展性,提供了华为云强大的基础架构所具备的功能,自动多区域数据复制、批量操作的原子性、一致性保证和事务支持。6、安全性,支持端云全程加密数据管理,APP、用户和服务三重认证,基于角色的权限管理等,全方位的保障数据安全。

认证服务的工作原理,采用基于对象模型的数据存储结构。数据以对象的形式存储在不同的存储区中,每一个对象,都是一条完整的数据记录。对象类型用于定义存储对象的集合,不同的对象类型对应的不同数据结构。存储区是一个独立的数据存储区域,每个存储区拥有完全相同的对象类型定义。您可以通过AppGallery Connect控制台,定义对象类型、创建存储区和管理数据。Cloud DB支持多种数据类型,包括简单的字符串、数值以及文本等。

接下来就跟着笔者的脚步来完成一个简单的云数据库。因为此处只是演示用,所以部分内容进行了简化。云数据库还可以支持其他平台,读者可以自行探索。

 

1、集成SDK

1)在AGC网站的我的项目中选择需要启用云数据库的应用,点击构建->云数据库,进入云数据库页面,立即开通服务,在引导界面选择"数据存储位置"

cke_27600.png

cke_40018.png

2)登录AGC网站,点击我的项目,在项目设置的应用栏下,下载配置文件"agconnect-services.json"。将配置文件复制到应用级根目录下。

cke_59035.png

cke_71491.png

3)添加AGC插件,在Android Studio项目级build.gradle文件中添加maven仓地址和HUAWEI agc插件。

cke_88365.png

4)打开Android Studio应用级build.gradle文件,添加添加agcp插件配置和Cloud DB SDK编译依赖。

cke_103110.png

cke_117855.png

5)点击界面上的"Sync Now"链接同步已完成的配置。

 

 

2、界面设计

1)在Android Studio工程中创建一个布局页面,只需要一个写入的按钮。

Xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity.LoginActivity">

        <Button
            android:id="@+id/bt_phoneLogin"

 

3、新增和导出对象类型

1)登录AppGallery Connect网站,选择"我的项目"。在项目列表页面中选择项目,单击项目下需要创建对象类型的应用。在导航树上点击"构建 > 云数据库"。单击"新增",进入创建对象类型页面。

cke_232824.png

2)输入"对象类型名"后,单击"下一步"。单击,新增如下字段后,单击"下一步"。单击,设置"索引名""索引字段"后,单击"下一步"。按照如下要求设置各角色权限后,单击"下一步"

cke_244639.png

3)单击"确定"。创建完成后返回对象类型列表中,可以查看已创建的对象类型。单击"导出"。选择导出文件格式,选择"java格式"。选择java文件类型,选择"android"

输入包名称。单击"导出" 文件将会导出至本地,其内包含该版本中所有的对象类型文件和对象类型信息文件。导出的java格式文件在后续步骤用于添加至本地开发环境。

cke_257101.png

 

 

4、新增存储区

1)登录AppGallery Connect网站,选择"我的项目"。在项目列表页面中选择项目,单击项目下需要创建存储区的应用。在导航树上选择"构建 > 云数据库"。选择"存储区"页签。单击"新增",进入创建存储区页面。

cke_282741.png

2)输入"存储区名称"。单击"确定"

 

 

5、添加对象类型文件

1)在开发应用时,可直接将AGC控制台上导出的java格式文件添加至本地开发环境,并通过AGConnectCloudDB类中的createObjectType()方法实现对象类型的定义和创建。您在进行本地应用开发时,无需再次创建对象类型。

cke_305992.png

 

 

6、初始化

1)在添加对象类型文件后,就可以使用云数据库进行应用开发。您在开发应用前,需要先执行初始化操作,初始化AGConnectCloudDB、创建Cloud DB zone和对象类型。在应用中初始化AGConnectCloudDB。获取AGConnectCloudDB实例,并创建对象类型。

cke_327999.png

cke_347973.png

2)创建Cloud DB zone配置对象,并打开该Cloud DB zone

cke_360566.png

 

7、写入数据

1)在应用界面中,我们增加了"写入"按钮,用于新增数据,并在CloudDBZoneWrapper中通过executeUpsert()实现数据的写入。我们对executeUpsert()进行了封装,可以直接使用upsertBookInfos()方法进行写入数据操作。

cke_418910.png

 

8、打包测试

1)运行Android Studio工程生成APK包,在测试手机中安装APK包。

2)在界面点击吸入数据后。打开云侧,选中"数据",选择对应的存储区和对象类型,就可以看到新增的数据。

cke_444840.png

 

 

以上,本次的内容分享,谢谢!

 

参考原文链接:

https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/CloudDB

 

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4478396/blog/5564838