華為 AppGallery Connect云數(shù)據(jù)庫到底有多牛?
點擊“開發(fā)者技術(shù)前線”,選擇“星標(biāo)” 讓一部分開發(fā)者看到未來
我們在開發(fā)每一個 APP 應(yīng)用時,都需要構(gòu)建多個服務(wù),包括前端頁面,后端服務(wù),服務(wù)器和數(shù)據(jù)庫。
特別是涉及到數(shù)據(jù)這一塊,面臨的挑戰(zhàn)更多,典型的挑戰(zhàn)包含本地數(shù)據(jù)的離線使用、云端與離線數(shù)據(jù)的一致性、不同終端數(shù)據(jù)的同步、數(shù)據(jù)如何安全傳輸,以及在一些特殊場景下,如何應(yīng)對短時但集中的大流量,還有如何保證數(shù)據(jù)的安全可靠,以及數(shù)據(jù)的備份與恢復(fù)等。
這些問題會導(dǎo)致我們的開發(fā)工作量巨大,同時還會帶來很多技術(shù)上的難題,以及與不同人員的溝通與協(xié)同等。
HUAWEI AppGallery Connect 平臺推出的云數(shù)據(jù)庫功能可以很好地幫助我們解決以上技術(shù)難題,接下來我們就嘗試使用云數(shù)據(jù)庫來構(gòu)建我們的應(yīng)用。
HUAWEI AppGallery Connect Serverless 構(gòu)建服務(wù)具有免運維、成本低、上線快、跨平臺的特點,包括認(rèn)證服務(wù)、云函數(shù)、云數(shù)據(jù)庫、云存儲、云托管,其中云數(shù)據(jù)庫簡稱“Cloud DB”,是一款端云協(xié)同的數(shù)據(jù)庫產(chǎn)品,提供端云數(shù)據(jù)的協(xié)同管理、統(tǒng)一的數(shù)據(jù)模型和豐富的數(shù)據(jù)管理 API 接口,簡單易用的端 / 云 SDK,適用于移動端(HarmonyOS、Android、iOS)、網(wǎng)頁(Web)和服務(wù)器開發(fā),滿足開發(fā)者一次開發(fā),多平臺部署,有效提高開發(fā)效率。在保證數(shù)據(jù)的可用性、可靠性、一致性以及安全等特性基礎(chǔ)上,實現(xiàn)數(shù)據(jù)在客戶端和云端之間的無縫同步,并為應(yīng)用提供離線支持,以幫助開發(fā)者快速構(gòu)建端云、多端協(xié)同的應(yīng)用。
Cloud DB 采用基于對象模型的數(shù)據(jù)存儲結(jié)構(gòu),支持多種數(shù)據(jù)類型,包括簡單的字符串、數(shù)值以及文本等,并提供基于對象操作的 API 接口,支持單個或批量操作對象,如新增、修改、刪除和查詢等。通過對需要關(guān)注的數(shù)據(jù)進(jìn)行訂閱,可自動將發(fā)生變化的數(shù)據(jù)在本地與云端和多設(shè)備間進(jìn)行實時同步。
Cloud DB 支持多個平臺,包含 Android、iOS、Web、快應(yīng)用等客戶端,本次我們以安卓客戶端為例來進(jìn)行構(gòu)建。
安裝“Android Studio”,并升級至最新版本。
為保證兼容性,要求最低兼容版本:Android 4.4(API Level 19)
集成 SDK。
注冊華為開發(fā)者帳號并通過實名認(rèn)證
打開 AppGallery Connect 網(wǎng)站并簽署協(xié)議





5. 至此我們的項目和應(yīng)用都已經(jīng)創(chuàng)建成功了
在使用 Cloud DB 之前,我們需要先啟用 Cloud DB 服務(wù)
開通 AppGallery Connect 認(rèn)證服務(wù),點擊“立即開通”



現(xiàn)在,我們可以對存儲區(qū)中的對象類型進(jìn)行管理,創(chuàng)建、修改、導(dǎo)出和導(dǎo)入等操作。
創(chuàng)建對象類型,我們可以創(chuàng)建字段、索引和數(shù)據(jù)權(quán)限

創(chuàng)建對象類型(類型于 mysql 中的表)

創(chuàng)建對象字段,對象 UserInfo 字段定義如下:


創(chuàng)建對象索引

設(shè)置數(shù)據(jù)權(quán)限


3. 存儲區(qū)創(chuàng)建成功后,我們就可以對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增刪改查等操作了



云數(shù)據(jù)庫創(chuàng)建完成后,我們就可集成到我們的項目中了。
打開 AppGallery Connect 網(wǎng)站找到我們創(chuàng)建的項目,在“項目設(shè)置”頁面下載配置文件“agconnect-services.json”到本機

將下載的 agconnect-services.json 添加到我們的 Android 項目中

打開項目根目錄下的 build.gradle 文件,配置華為 maven 倉庫和插件地址

注意:Gradle 7.0 版本后,“allprojects > repositories”配置已遷移到項目級“settings.gradle”文件中。

Gradle 7.0 之前版本在 build.gradle 文件里設(shè)置 (allprojects ->repositories)

打開項目 app 目錄下的 build.gradle 文件,添加 agcp 插件配置和數(shù)據(jù)庫依賴, 如使用 AppGallery Connect 的其他服務(wù)也需在此添加信賴
所有配置修改完成后,右上方出現(xiàn)“Sync Now”鏈接,點擊“Sync Now”等待同步完成。



在添加對象類型文件后,我們就可以使用華為的云數(shù)據(jù)庫進(jìn)行應(yīng)用開發(fā)了,首先初始化 AGConnectCloudDB、并創(chuàng)建 Cloud DB zone 和對象類型。

通過 getInstance()方法獲取 AGConnectCloudDB 實例,并使用 createObjectType()創(chuàng)建對象類型。

創(chuàng)建 Cloud DB zone 配置對象后,即可訪問 Cloud DB 數(shù)據(jù)庫。

通過調(diào)用 AGConnectCloudDB 實例的 executeUpsert () 可實現(xiàn)數(shù)據(jù)的寫入,如果云數(shù)據(jù)庫中已經(jīng)存在主鍵相同的對象,則更新,否則寫入一個新的對象。

通過調(diào)用 executeQuery()、addOnSuccessListener() 和 addOnFailureListener() 方法組合,實現(xiàn)異步方式查詢數(shù)據(jù)。

Cloud DB 支持豐富的功能供我們對數(shù)據(jù)進(jìn)行操作,包含條件查 (where),排序 (orderByAsc,orderByDesc),限定返回結(jié)果集對象數(shù)量 (limit) 等功能,我們只需要調(diào)用 SDK 指定的方法和參數(shù)即可。

通過調(diào)用 executeDelete 方法可刪除指定的對象數(shù)據(jù)。

通過注冊數(shù)據(jù)變化偵聽器,我們可以很方便的對云端和本地數(shù)據(jù)進(jìn)行數(shù)據(jù)同步具體方法:通過查詢條件與 subscribeSnapshot() 方法組合使用,可以指定偵聽對象,當(dāng)偵聽對象的數(shù)據(jù)發(fā)生變化時,應(yīng)用端會收到通知,根據(jù)快照獲取變化的數(shù)據(jù)信息,從云側(cè)同步數(shù)據(jù)至應(yīng)用端側(cè)應(yīng)用。注意:數(shù)據(jù)同步模式需為緩存模式。

使用 runTransaction() 方法,Cloud DB 可以支持事件操作,事務(wù)是原子的,一個事務(wù)內(nèi)的所有操作要么全部執(zhí)行成功,要么全部執(zhí)行失敗。如果執(zhí)行事務(wù)時出現(xiàn)并發(fā)寫入,Cloud DB 會再次嘗試執(zhí)行整個事務(wù),確保整個事務(wù)操作的一致性。注意:事務(wù)操作需要 Cloud DB 的數(shù)據(jù)同步模式為緩存模式。

Cloud DB 還提供了對通信、應(yīng)用、用戶提供隱私或者敏感數(shù)據(jù)的全程加密管理。該功能開啟后,用戶數(shù)據(jù)將在應(yīng)用端進(jìn)行加密,然后以密文形式發(fā)送并存儲到云側(cè),只有用戶依據(jù)其輸入的密碼獲取密鑰信息后才能訪問自己的加密數(shù)據(jù)。只有用戶自己才能訪問自己的數(shù)據(jù),應(yīng)用端和云數(shù)據(jù)庫都無法訪問, 有效提高了用戶數(shù)據(jù)的安全性,杜絕了用戶數(shù)據(jù)在云端泄露的風(fēng)險。

以上,我們通過華為 SDK 提供的幾個方法,就完成了對云數(shù)據(jù)庫的訪問,數(shù)據(jù)的增刪除改查等操作,同時也完成了離線數(shù)據(jù),多端數(shù)據(jù)同步,數(shù)據(jù)安全與事務(wù)等眾多功能
通過以上示例,我們可以得到 Cloud DB 具有以下優(yōu)點:
極簡開發(fā),多平臺 SDK 支持,目前支持 Anroid,IOS,JS, 快應(yīng)用等
端云數(shù)據(jù)實時同步、多設(shè)備數(shù)據(jù)協(xié)同以及離線數(shù)據(jù)可用的能力,輕松實現(xiàn)多端數(shù)據(jù)協(xié)同
提供通信、應(yīng)用、用戶三重認(rèn)證,數(shù)據(jù)加密存儲,事務(wù)管理等
無需運維,不再需要關(guān)注數(shù)據(jù)的管理,安全,維護(hù)等,同時可按使用量進(jìn)行計價
按需彈性伸縮,支持?jǐn)?shù)據(jù)庫高并發(fā),我們只聚焦業(yè)務(wù)開發(fā)即可
無需要開發(fā)者特殊處理,即可實現(xiàn)應(yīng)用離線可用功能
支持豐富的數(shù)據(jù)類型,基本類型、文本、數(shù)據(jù)、日期等
Cloud DB 作為 HUAWEI AppGallery Connect 服務(wù)的一部分可跟其他服務(wù)完美接入,包括 Serverless、認(rèn)證、眾測、質(zhì)量等
開發(fā)者社區(qū)已經(jīng)十分成熟,開發(fā)文檔,示例 DEMO 等資料都很齊全
其他相同產(chǎn)品對比:

通過與其他產(chǎn)品對比可發(fā)現(xiàn) HUAWEI AppGallery ConnectCloud DB 無論是在產(chǎn)品特性上還是在收費標(biāo)準(zhǔn)上都更有優(yōu)勢。
正如本文所述,HUAWEI AppGallery Connect Cloud DB 是一款端云協(xié)同的數(shù)據(jù)庫產(chǎn)品,在數(shù)據(jù)安全,多端數(shù)據(jù)同步,事務(wù)處理,多 SDK 支持,彈性伸縮,可擴(kuò)展,跨平臺方面的優(yōu)勢,都極大地減輕了我們開發(fā)者的工作量。
