「九」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云端的云数据库资源。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双臂机器人

目录 一、双臂机器人简介 二、双臂机器人系统的组成 三、双臂机器人面临的主要挑战 3.1 协调与协同控制问题 3.2 力控制与柔顺性问题 3.3 路径规划与轨迹优化问题 3.4 感知与环境交互 3.5 人机协作问题 3.6 能源与效率问题 3.7 稳定性与可靠性问题 四、双臂机器人…

Lua语言入门 - Lua 面向对象

Lua 面向对象 面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构,通过创建和操作对象来设计应用程序。 以下几种编程语言都支持面向对象编程: CJavaObjective-CSmalltalkC#Ruby Lua 是…

电子电器架构 ---整车区域控制器

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

机器人国际会议IROS论文latex模板

机器人国际会议IROS论文latex模板 文档 root.tex 可以配置为 US Letter 纸或 A4。请注意以下重要行:\documentclass[letterpaper, 10 pt, Conference]{ieeeconf} % 如果需要 a4paper,请注释掉此行%\documentclass[a4paper, 10pt, Conference]{ieeeconf} …

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…

Java中的方法重写:深入解析与最佳实践

在Java编程中,方法重写(Method Overriding)是面向对象编程(OOP)的核心概念之一。它允许子类提供一个与父类中同名方法的具体实现,从而实现多态性(Polymorphism)。本文将深入探讨Java…

基础电路的学习

1、戴维南定理 ①左边的图可简化为一个电阻+一个电压源。② ③电压源可相当于开路。将R2移到左边,R1和R2相当于并联。RR1//R2 Rx和Rt相等时,灵敏度最大,因此使Rt10K。 104电容是0.1uf。 三位数字的前两位数字为标称容量的有效数…

麒麟操作系统服务架构保姆级教程(二)sersync、lsync备份和NFS持久化存储

如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 上篇文章我们说到rsync虽好,但是缺乏实时性,在实际应用中,咱们可以将rsync写进脚本,然后写进定时任务去备份,如果每天凌晨1:00…

使用visnode做节点管理

背景 visnode起源于解决本人在研究生期间做学术研究时遇到的困惑。 当时的项目涉及到比较多的参数,需要做参数调整优化,每一次调整参数都是在上一组最优的一些参数组合中做微调,然后重新计算,每一次计算又会产生大量的文件&…

28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强

A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法:无模型水下图像增强方法:基于深度学习的水下图像增强方法: 论文方法概述像素分布…

今日-冬至

夏尽秋分日 春生冬至时 今天17时21分 我们迎来冬天的第四个节气 冬至 冬至是北半球全年中 白天最短、黑夜最长的一天 过了今天 阳光的照射将逐渐增多 白天的时间也会越来越长 温暖和春意正在一点点靠近 我国民间有“数九”的习俗 又称“冬九九”“交九” 从冬至起&…

WebRTC搭建与应用(一)-ICE服务搭建

WebRTC搭建与应用(一) 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC、ICE信令协议等有了初步了解,在此记录一下,以防遗忘。 第一章 ICE服务搭建 文章目录 WebRTC搭建与应用(一)前言一、ICE是什么?二、什么…

LabVIEW伸缩臂参数监控系统

LabVIEW开发伸缩臂越野叉车参数监控系统主要应用于工程机械中的越野叉车,以提高车辆的作业效率和故障诊断能力。系统通过PEAK CAN硬件接口和LabVIEW软件平台实现对叉车作业参数的实时监控和故障分析,具有良好的实用性和推广价值。 系统组成 系统主要由P…

VR博物馆能模拟哪些历史场景?

VR博物馆以其卓越的模拟能力,能够带领观众穿越时空,体验从古罗马的斗兽场到中世纪的欧洲城堡,从文艺复兴的佛罗伦萨到工业革命的蒸汽机,再到二战的紧张战场,每一种历史场景都栩栩如生,让人仿佛亲历其境&…

网络安全防范

实践内容 学习总结 PDR,$$P^2$$DR安全模型。 防火墙(Firewall): 网络访问控制机制,布置在网际间通信的唯一通道上。 不足:无法防护内部威胁,无法阻止非网络传播形式的病毒,安全策略…

投标心态:如何在“标海战术”中保持清醒的头脑?

在竞争激烈的市场环境下,“标海战术”——即大规模参与投标——已经成为许多企业争取市场份额的重要策略。然而,盲目追求投标数量可能导致资源浪费、团队疲劳以及战略目标的模糊化。在这种高强度的竞争模式中,如何保持清醒的头脑,…

ICLR 2025 | 时间序列(Time Series)高分论文总结

ICLR2025已经结束了讨论阶段,进入了meta-review阶段,分数应该不会有太大的变化了,本文总结了其中时间序列(Time Series)高分的论文。如有疏漏,欢迎大家补充。 挑选原则:均分要大于等于6(≥6,即…

SpringBoot集成ENC对配置文件进行加密

在线MD5生成工具 配置文件加密&#xff0c;集成ENC 引入POM依赖 <!-- ENC配置文件加密 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</ver…

ASP.NET|日常开发中数据集合详解

ASP.NET&#xff5c;日常开发中数据集合详解 前言一、数组&#xff08;Array&#xff09;1.1 定义和基本概念1.2 数组的操作 二、列表&#xff08;List<T>&#xff09;2.1 特点和优势2.2 常用操作 三、字典&#xff08;Dictionary<K, V>&#xff09;3.1 概念和用途…

金融信息系统多活技术-应用策略

目录 概述 ​编辑 多活应用场景 流水型系统 账户型系统 流水型系统应用策略 业务模型说明 系统并行策略 接入和路由策略 系列阅读 概述 本文件提出了金融信息系统多活技术的应用指南&#xff0c;金融机构可根据自身业务需要&#xff0c;结合本文件进行 多活信息系统的…