「九」HarmonyOS 5 端云一体化实战项目——「M.U.」应用云侧开发云数据库

1 立意背景

M. 代表 “我”,U. 代表 “你”,这是一款用于记录情侣从相识、相知、相恋、见家长、订婚直至结婚等各个阶段美好记忆留存的应用程序。它旨在为情侣们提供一个专属的空间,让他们能够将一路走来的点点滴滴,如初次相遇时的心动瞬间、逐渐了解彼此过程中的深入交流、甜蜜恋爱时期的浪漫时刻、面对家长时的紧张与期待、订婚时的喜悦以及结婚时的神圣幸福等,都以一种独特而有意义的方式记录下来。这款应用程序就像是一个装满珍贵回忆的宝库,随着时间的推移,见证着情侣们爱情旅程的每一个重要阶段,成为他们美好爱情的永恒见证者和守护者。

2 HarmonyOS特性能力接入场景

  • 华为账号服务
  • 云开发服务
  • 预加载

我们团队开发的MU作品是一款用于记录,情侣之间相处时各个阶段照片的归集。提供欢迎页、用户无感知匿名登录,相册管理,用户信息查看等功能。

  • 欢迎页快速响应:通过预加载服务,实现可更换欢迎页快速响应功能。

  • 用户无感知匿名登录:我们使用首次启动应用程序生成的UUID作为主键,关联用户的unionId和openId,达到用户无论是卸载重装还是冷启动,都能够快速响应用户数据信息。用户基本信息通过云数据库接口存储云端,用户头像通过云存储接口存入云端并更新对应的云数据库数据条目。

  • 相册管理:使用云数据库和云存储服务实现相册的封面、标题、描述、内容信息的留存。

image-20241211192208851

3 作品资源

3.1 欢迎页

image-20241211184803136

3.2 时光轴

image-20241212172058787

1)创建相册

image-20241212172136678

2)上传照片

image-20241212172206452

3.3 我的

image-20241212172246623

4 一些理论性的知识要点

4.1 云数据库概述

云数据库是一款端云协同的数据库产品,是AGC云开发(AGC Serverless)关键服务之一,为AGC构建了MBaas(Mobile Backend as a Service,移动后端即服务)能力。云数据库提供了端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力,端侧可以编写少量的代码实现AGC云端云数据库的交互。

云数据库采用基于对象模型的数据存储结构,与常见的关系数据库(MySQL,Oracle等)类似,包含数据表、表字段、表字段值、主键,以及表操作权限。唯一不同在于存储区,数据以对象的形式存储在不同的存储区中,每一个对象,都是一条完整的数据记录。存储区是一个独立的数据存储区域,每个存储区拥有完全相同的对象类型定义(也就是数据表),可以根据业务能力为不同用户划分不同的存储区。

云数据库对象类型、存储区以及数据,可以通过AGC控制台定义、创建和管理,也可以通过一站式集成开发工具DevEco Studio定义、创建和管理。云数据库支持多种数据类型,包括字符串、数值、文本、日期等。

云数据库还提供了多重数据安全策略,基于隐私或者敏感数据的全程加密管理能力,加密字段的数据在端侧会被加密,然后再以密文形式发送并存储到云数据库中。同时,提供基于角色的权限管理模型,预置4种角色和3种权限,来保证数据的安全,同时简化了权限管理操作。

4.2 数据库模型概述

云数据库是一款基于对象模型的数据库,采用存储区、对象类型和对象三级结构。每个应用在开通云数据库服务后,都会实例化一个云数据库实例,该实例中可以创建多个对象类型(数据表)、多个存储区。一个对象类型的数据可以对应一个存储区,也可以对应多个存储区。

  • 对象类型(ObjectType):用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型,云数据库会在每个存储区实例化一个与之结构相应的对象类型,用于存储对应的数据。
  • 存储区(CloudDBZone):是一个独立的数据存储区域,多个数据存储区相互独立。每个存储区拥有完全相同的对象类型定义,开发者可以根据业务需要自定义存储区中存储的对象。
  • 对象(CloudDBZoneObject):是云数据库基本操作单元,每个对象,都是一条完整的数据记录。

4.2.1 数据类型

云数据库支持多种数据类型,如下表所示:

数据类型描述取值范围说明
String字符串类型最大长度200字符串长度超过200,请使用Text类型。
Boolean布尔类型true:真;false:假。-
Byte单字节整型-128 ~ +128-
Short双字节整型-32,768 ~ +32,767-
Integer四字节整型-2,147,483,648 ~ +2,147,483,647-
Long八字节整型-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807-
Float单精度浮点数-3.40E+38 ~ +3.40E+38,6位十进制有效数字。-
Double双精度浮点数-1.79E+308 ~ +1.79E+308,15位十进制有效数字。-
ByteArray字节数组-一般用于文件类型的数据存储,如图片、文档和视频等。
Text文本类型--
Date日期类型--
IntAutoIncrement自增类型,从1开始自增,Integet类型。1 ~ 2,147,483,647-
LongAutIncrement自增类型,从1开始自增,Long类型。1 ~ 9,223,372,036,854,775,807-

4.2.2 权限管理

云数据库支持对所有用户的访问进行鉴权,保障应用数据的安全。云侧访问云数据库的用户角色默认位管理员角色,即从AGC控制台、云函数和Server端访问云数据库角色,该角色默认拥有所有权限。端侧为应用程序运行端,端侧的数据操作有严格的安全规则限制,其数据的读写权限根据云侧权限配置表进行控制。

云数据库预置4种角色和3种权限,如下表所示:

角色queryupsertdelete说明
所有人代表所有用户,包含认证和非认证用户。该角色默认拥有query权限,可自定义配置upsert和delete权限,但不建议将upsert和delete权限配置给所有人角色。当对象类型中设置了加密字段之后,表示开启全程加密功能,此时所有人角色将不会拥有query、upsert和delete权限,且不允许修改。
认证用户经过AGC登录认证的用户。该角色默认拥有query权限,可自定义配置upsert和delete权限。当对象类型中设置了加密字段之后,表示开启全程加密功能,此时认证用户角色将不会拥有query、upsert和delete权限,且不允许修改。
数据创建者经过认证的数据创建用户。该角色默认拥有所有权限,且可自定义配置所有权限。每条数据都有其对应的数据创建人(即应用用户),每个数据创建者仅可以upsert或者delete自己创建的数据,不能upsert或者delete他人创建的数据。数据创建者的信息保存在数据记录的系统表中。
管理员应用开发者,主要是指通过AGC控制台或FaaS(Function as a Service,函数即服务)侧访问云数据库的角色。该角色默认拥有所有权限,且可自定义配置所有权限。管理员可以管理并配置其他角色的权限。

5 创建一个存储「欢迎页信息」的对象类型

5.1 开发流程

使用端云一体化云侧工程开发云数据库流程为以下四步:

  • 确保云数据库服务开通。
  • 通过DevEco Studio工具在云侧工程创建一个用于存储数据条目的对象类型。
  • 通过DevEco Studio工具在云侧工程为创建的对象类型添加数据,并配置数据所在存储区。
  • 数据成功添加后,通过DevEco Studio工具提供的一键部署能力,将对象类型和数据条目部署到AGC云端。

5.2 确保云数据库服务开通

使用DevEco Studio预置的通用云开发模板创建的端云一体化工程,在工程初始化时,会自动开通云开发(Serverless)服务,若在开发工具主界面通知栏(Notifications)中显示服务开通失败,需按照以下步骤进行开通个。

  • 登录AGC控制台,点击“我的项目”。

image-20241210123424988

  • 在项目列表中点击需要开通云数据库的项目。

image-20241210143156762

  • 在打开的目标项目左侧导航栏选择“云开发(Serverless) > 云数据库”,进入云数据库页面,点击“立即开通”。

  • 在开通云数据库时,若尚未设置默认数据处理位置,在弹出的”数据处理位置“窗口进行设置,仔细阅读弹出提示框的文字说明后,在“启用”栏为您的项目勾选一个或多个数据处理位置,并在“设为默认”栏将其中一个设置为默认数据处理位置。

img

5.3 云侧创建对象类型

  • 展开云侧工程目录,右击“clouddb/objecttype”目录,选择“New > Cloud DB Object Type”。

image-20241210144911064

  • 在弹出的新建对象类型窗口中输入对象类型名称(下文以“Welcome”为例)后,点击OK按钮完成创建。对象类型命名必须符合以下规范:
    • 只能包含大小写字母,数字,下划线,并且至少包含字母类型。
    • 必须以字母开头,以字母或者数字结尾,不允许以“sqlite_”开头,不允许以下划线结尾。
    • 不允许使用如下系统保留名称:naturalbase_metadata、objecttypeinfohelper、t_data_upgrade_info、t_index_schema、t_nstore_config、t_schema_negotiate_info、t_metadata_schema、t_nstore_permission、t_system_config。

image-20241210150732982

  • DevEco Studio工具会根据通用云开发模板内置的对象类型模板新建对象类型JSON文件”Welcome.json“,并会在编码区自动打开该文件。文件结构属性包括对象类型名称(objectTypeName)、对象类型配置字段信息(fields)、对象类型索引信息(indexes)、对象类型角色权限(permissions)。

image-20241210151140816

  • 根据业务需要在“fields”中配置对象类型字段信息,字段属性(需要满足的规范参见在“fileds”中为该对象类型配置字段信息)如下表所示。
参数必选(M)/可选(O)说明
fieldNameM字段名称。
filedTypeM字段的数据类型。
belongPrimaryKeyO设置该字段是否为对象类型的主键,默认值为false。
notNullO设置字段值是否为非空,默认为false。
isNeedEncryptO设置字段是否需要加密,开启全程加密数据管理功能,默认值为false。
isSensitiveO设置字段是否为敏感字段,默认值为false。
defaultValueO字段为非空时,必须设置默认值。

例如:为“Welcom”对象类型配置如下字段:

filedNamefieldTypebelongPrimaryKeynotNullisNeedEncryptdefaultValue
idIntegertruetrue
imgString
statusByte0
createTimeDate
"fields": [{"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},{"fieldName": "img", "fieldType": "String"},{"fieldName": "status", "fieldType": "Short", "defaultValue": 0},{"fieldName": "createTime", "fieldType": "Date"}
]
  • 根据业务需要在“indexes”中为该对象类型配置索引、索引包含的字段、以及索引包含的字段的排序方式。索引属性(需要满足的规范参见在“indexes”中为该对象类型配置索引)如下表所示。
参数必选(M)/可选(O)说明
indexNameM索引名称。
indexList > fieldNameM索引包含的字段。
indexList > sortTypeM索引包含的字段的排序方式,支持升序或降序。

例如:为“Welcom”对象类型配置如下索引:

indexNamefieldNamesortType
IND_202412101709idASC
createTimeDESC
"indexes": [{"indexName": "IND_202412101709","indexList": [{"fieldName": "id","sortType": "ASC"},{"fieldName": "createTime","sortType": "DESC"}]}]
  • 根据实际业务在“permissions”中设置各角色是否具有该对象类型的Read、Upsert(包含新增和修改)和Delete权限。角色权限属性(需要满足的规范参见在“permissions”中设置各角色对象类型权限)如下表所示。
参数必选(M)/可选(O)说明
roleM用户角色。
rightsM授予角色的权限,包括Read、Upsert(包括新增和修改)和Delete权限。

例如:为“Welcom”对象类型各角色配置权限:

角色ReadUpsertDelete
World
Authenticated
Creator
Administrator
"permissions": [{"role": "World","rights": ["Read"]},{"role": "Authenticated","rights": ["Read","Upsert"]},{"role": "Creator","rights": ["Read","Upsert","Delete"]},{"role": "Administrator","rights": ["Read","Upsert","Delete"]}]

5.4 添加数据条目

如果在创建对象类型后,直接一键部署对象类型,会出现以下异常信息。发生这种异常信息是因为未在对象类型内添加数据条目。

image-20241210201542362

  • 为对象类型添加数据条目,并配置数据所在的存储区,当前支持手动创建和自动生成数据条目文件,建议使用DevEco Studio工具提供的自动生成数据条目文件。右击对象类型JSON文件,选择“Generate Data Entry”,依旧以对象类型“Welcome”为例,包含“id”、“img”、“status”、“createTime”六个字段。

image-20241210204716519

  • 在弹出的“New Cloud DB Data Entry”窗口内,为即将生成的数据条目文件定义名称。此处取默认值“d_Welcome”为例。

image-20241210204849343

  • 会根据DevEco Studio工具预置通用云开发模板提供的数据条目模板自动在“clouddb/dataentry”目录下为对象类型“Welcome”生成数据条目文件“d_Welcome”,该文件中已为开发者预置了默认的存储区,所属对象类型名称(“Welcome”),以及对象类型的字段名(“id”、“img”、“status”、“createTime”)。
    • cloudDBZoneName:配置存储区名称,支持自定义,需要开发者记住存储区名称,在使用API访问云数据库时需要使用该值获取对象类型数据。
    • objectTypeName:对象类型名称。
    • objects:配置当前对象类型中所有字段的值,即写入数据。一个对象即为一条数据,可以通过新建一个对象来为字段赋新值,也可以修改某个对象下字段的值。需要注意的是,主键或加密字段的值不支持修改。
{"cloudDBZoneName": "default","objectTypeName": "Welcome","objects": [{"id": 1,"img": "string1","status": 0,"createTime": 1733835123302}]
}

5.5 部署云数据库

完成对象类型创建以及对象类型数据条目创建后,开发者可以通过右击对象类型或者数据条目直接将对象类型和数据条目部署到AGC云端。DevEco Studio工具支持单个对象类型和数据条目部署,也支持批量部署。

  • 单个对象类型部署,右击对象类型名称。若批量部署,需要右击“clouddb”目录,选择“Deploy Cloud DB”。

image-20241210214704992

  • 可以在开发工具主界面底部状态栏右侧查看云数据库打包与部署进度。

image-20241210214855309

  • 等待部署云数据库,直至出现“Deploy successfully”消息,表示云数据库已成功部署。

image-20241210214913470

  • 云数据库部署成功后,DevEco Studio工具会自动从AGC云端下载云数据库的schema文件,并将该文件存储在端侧工程“AppScope/resources/rawfile“目录,文件名称为”schema.json“,该文件是端侧API访问云数据库必须引入的配置文件。

image-20241210215224571

5.6 查看云数据库部署情况

  • 在DevEco Studio工具主界面顶部菜单栏选择“Tools > Cloud Dev”打开云开发管理面板。

image-20241210215552640

  • 如果开发工具尚未登录华为开发者账号,需要先登录授权才可以使用云开发管理面板能力。点击面板中的“CloudDev > Go to console”或者“Serverless > Cloud DB > Go to console”打开AGC控制台。两者区别在于第一种方式需要在AGC控制台页面点击左侧“云数据库”菜单,而第二种方式可以直接定位到AGC控制台云数据库子控制台。

image-20241210220035485

  • 分别点击“对象类型”、“存储区”与“数据”页签,查看通过DevEco Studio工具开发并部署的云数据库资源是否已经成功部署到AGC云端。

image-20241210221037917

6 总结

本小节主要对云数据库相关概念做了简单了解,并通过创建「欢迎页信息」对象类型详细讲解了使用一站式集成工具DevEco Studio开发、部署云数据库至AGC云端,同时提供了如何查看部署到AGC云端的云数据库资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491593.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】lab2 Ethernet(链路层Ethernet frame结构细节)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. …

“从零到一:揭秘操作系统的奇妙世界”【操作系统的发展】

1.手工操作阶段 此时没有OS,用户采用人工操作方式进行。 方式:程序员在纸带机上打孔---计算机读取---结果输出到纸袋机上---程序员取走结果 缺点:耗时长,难度大、用户独占全机、人机速度矛盾导致资源利用率低 2.单批道处理系统 引…

Base64在线编码解码 - 加菲工具

Base64在线编码解码 - 加菲工具 打开网站 加菲工具 选择“Base64 在线编码解码” 或者直接打开https://www.orcc.online/tools/base64 输入需要编码/解码的内容,点击“编码”/“解码”按钮 编码: 解码: 复制已经编码/解码后的内容。

python 配置 oracle instant client

1.问题描述 想用python连接oracle数据库,百度得知需要cx_Oracle这个第三方库 import cx_Oracle# 设置Oracle数据源名称 dsn cx_Oracle.makedsn(host, port, service_nameservice_name)# 创建数据库连接 connection cx_Oracle.connect(userusername, passwordpas…

GCNet的简述

其中了解self-attention知道他的计算量是 Global Context Attention计算量变少从变成 NL: (a)首先resize成CHW然后通过11的卷积生成q,k,v,然后q乘 变成HWHW,然后通过softmax进行归一化然后和v进行乘,再通…

高斯混合模型及最大期望算法(EM)聚类

混合高斯分布(Gaussian Mixture Model,GMM)是一种概率模型,用于表示具有多个高斯分布的加权组合的数据集。它被广泛应用于模式识别、聚类分析和密度估计等领域。 定义 混合高斯分布由多个单变量或多变量高斯分布的线性组合组成。…

stable diffusion学习01

ai的效果 ai绘画能画什么呢?理论上只要是能画出来的都能画。 ai绘画能做到的程度 能够通过文字描述生成图片在基础图片上重新绘制或修改一张图片,但ai绘画无法做到给一张图片画出无数张这个物体或人物的图片。 ai绘画在拥有足够的素材进行训练…

【容器】k8s学习笔记原理详解(十万字超详细)

Pod详解 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类: 用户程序所在的容器,数量可多可少Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个: 可以以它为依据&am…

wazuh-modules-sca-scan

sca模块主函数wm_sca_main -> wm_sca_start 检查policy文件中的每一个项目wm_sca_check_policy static int wm_sca_check_policy(const cJSON * const policy, const cJSON * const checks, OSHash *global_check_list) {if(!policy) {return 1;}const cJSON * const id c…

图漾相机-ROS1_SDK_ubuntu版本编译(新版本)

文章目录 官网编译文档链接官网SDK下载链接1、下载 Camport ROS1 SDK1.下载git2、下载链接 2、准备编译工作1、安装 catkin2、配置环境变量3. 将Camport3中的linux库文件拷贝到 user/lib目录下4、修改lunch文件制定相机(可以放在最后可以参考在线文档)**…

基于单片机的智能窗帘(论文+源码)

1.系统设计 本课题智能窗帘系统的设计主要包括STM32单片机主控模块,光照检测模块,窗帘控制模块,键盘控制模块,显示模块和时钟模块等几个部分。总体设计框图如图2.1所示,其可以实现对当前光照强度的实时检测&#xff0…

召回系统介绍

一、以Lucene为例介绍召回系统 1、倒排检索 Lucene的倒排索引由 Term Index -> TermDictionary -> Posting List 三层组成,倒排检索实际上就是通过分词Term查询到倒排拉链,然后对所有拉链进行合并。 Term-> Posting List,可以直接…

Springboot实现自定义注解,接口返回自动增加字段

1、创建注解文件: package com.aiipc.dpm.api.annotation;import java.lang.annotation.*;Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) Documented public interface Echarts {/*** 单位* return*/String unit() default "";/*** 颜…

【云计算】OpenStack单节点allinone部署

OpenStack单节点all-in-one部署 工具准备环境搭建创建centos7虚拟机ssh连接 安装前的设置禁用防火墙禁用 NetworkManager服务启用 network 服务修改主机名以及映射时间同步 安装openstcak项目配置主机原网络配置修改网络配置使配置生效删除项目默认的路由和网络创建外网ext-net…

界面控件DevExpress v24.2.3全新发布——正式支持.NET 9

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。 屡获大奖的软件开发平台DevExpress 近期重要版本v24.2已正式发布,该版本拥有众多新…

Three.js资源-模型下载网站

在使用 Three.js 进行 3D 开发时,拥有丰富的模型资源库可以大大提升开发效率和作品质量。以下是一些推荐的 Three.js 模型下载网站,它们提供了各种类型的 3D 模型,适合不同项目需求。无论你是需要逼真的建筑模型,还是简单的几何体…

(三)PyQT5+QGIS+python使用经验——解决各版本不兼容问题

一、问题描述 基础环境:Windows10(64) PyCharm2024 QGIS 3.22。 目的:解决之前python版本多,pyqt5以及QT Designer交互使用存在环境变量冲突矛盾,以及QGIS安装时自带python、pyqt5等问题。 尤其是在QT …

C++ webrtc开发(非原生开发,linux上使用libdatachannel库)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、libdatachannel库的下载和build二、开始使用 1.2.引入库3.开始使用 总结 前言 使用c开发webrtc在互联网上留下的资料甚少,经过我一段时间的探…

SpringBoot 手动实现动态切换数据源 DynamicSource (中)

大家好,我是此林。 SpringBoot 手动实现动态切换数据源 DynamicSource (上)-CSDN博客 在上一篇博客中,我带大家手动实现了一个简易版的数据源切换实现,方便大家理解数据源切换的原理。今天我们来介绍一个开源的数据源…

上海艾一公司-运维工程师知识点备战

1.AD域控(ActionDirectory活动目录) ad域的作用:批量管理主机和用户(所以数量要多用这个才合适) 前置1:VM安装Windows镜像 2.IT资产管理 3.会议室管理