【HarmonyOS Next之旅】DevEco Studio使用指南(二十九) -> 开发云数据库
目录
1 -> 开发流程
2 -> 创建对象类型
3 -> 添加数据条目
3.1 -> 手动创建数据条目文件
3.2 -> 自动生成数据条目文件
4 -> 部署云数据库
1 -> 开发流程
云数据库是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力。云数据库采用基于对象模型的数据存储结构。数据以对象(Object)的形式存储在不同的存储区中,每一个对象,都是一条完整的数据记录。对象类型(ObjectType)用于定义存储对象的集合,不同的对象类型对应的不同数据结构。存储区(Zone)是一个独立的数据存储区域,每个存储区拥有完全相同的对象类型定义。
可以使用DevEco Studio在端云一体化云侧工程下开发云数据库,总体流程如下。
- 创建对象类型:创建一个用于存储数据条目的对象类型。
- 添加数据条目:在刚刚创建的对象类型内添加一条条数据,并配置数据所在的存储区。
- 部署云数据库:数据成功添加后,可以直接将该数据部署至AGC云端。也可以等所有对象类型和数据条目开发完成后,再统一批量部署到AGC云端。
2 -> 创建对象类型
对象类型(ObjectType)用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型,云数据库会在每个存储区实例化一个与之结构相对应的对象类型,用于存储对应的数据。
创建对象类型的操作如下:
1. 右击“clouddb/objecttype”目录,选择“New > Cloud DB Object Type”。
2. 输入对象类型名称(下文以“objecttype1”为例)后,点击“OK”。
说明
对象类型名称必须符合如下规范:
- 只能包含字母(A-Z或a-z)、数字(0-9)和下划线(_),并且至少包含字母类型。
- 必须以字母开头,以字母或者数字结尾,不允许以“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。
“clouddb/objecttype”目录下生成并打开新建的对象类型JSON文件“objecttype1.json”。
3. 在“fields”中为该对象类型配置字段信息。
参数 | 必选(M)/可选(O) | 说明 |
fieldName | M | 字段名称。 输入要求具体如下:
说明 当前Cloud Foundation Kit暂不支持自增类型字段IntAutoIncrement或LongAutoIncrement。 |
fieldType | M | 字段的数据类型。 当前支持的数据类型:String、Boolean、Byte、Short、Integer、Long、Float、Double、ByteArray、Text、Date。 |
belongPrimaryKey | O | 设置该字段是否为对象类型的主键,默认值为false。
|
notNull | O | 设置字段值是否为非空,默认值为false。
|
isNeedEncrypt | O | 设置字段是否需要加密,开启全程加密数据管理功能,默认值为false。 选择加密后,该字段对应的数据会加密存储在存储区中。
|
isSensitive | O | 设置字段是否为敏感字段,默认值为false。 选择敏感后,该字段对应的数据会加密存储在存储区中。
|
defaultValue | O | 字段为非空时,必须设置默认值。
|
例如,我们可为“objecttype1”对象类型配置如下字段。
fieldName | fieldType | belongPrimaryKey | notNull | isNeedEncrypt | defaultValue |
author | String | true | true | - | - |
shadowFlag | Boolean | - | true | - | true |
bookName | String | - | - | - | - |
id | Integer | - | - | - | - |
price | Double | - | - | - | - |
publishTime | Date | - | - | - | - |
4. 在“indexes”中为该对象类型配置索引、索引包含的字段、以及索引包含的字段的排序方式。
参数 | 必选(M)/可选(O) | 说明 |
indexName | M | 索引名称。 输入要求具体如下:
|
indexList > fieldName | M | 索引包含的字段。 支持设置组合索引,由多个字段组合成为索引,一个组合索引包含的字段不超过5个。 |
indexList > sortType | M | 索引包含的字段的排序方式,支持升序或降序。 |
例如,我们可为“objecttype1”对象类型配置如下两个索引。
indexName | fieldName | sortType |
id_Index | id | ASC |
price_Index | price | DESC |
5. 在“permissions”中设置各角色是否具有该对象类型的Read、Upsert(包含新增和修改)和Delete权限。
参数 | 必选(M)/可选(O) | 说明 |
role | M | 用户角色,包括:
|
rights | M | 授予角色的权限,包括Read、Upsert(包含新增和修改)和Delete权限。 |
说明
各角色只能完成对应权限的操作,超出权限范围的操作云侧将返回“permission denied”错误。由于端云一体化工程的初始化代码未配置AccessToken,故“CloudProgram/clouddb/objecttype/Post.json”中给World角色添加了Upsert和Delete权限。
例如,我们可按下表为各个角色配置“objecttype1”对象类型的权限。
角色 | Read | Upsert | Delete |
World | √ | – | – |
Authenticated | √ | √ | – |
Creator | √ | √ | √ |
Administrator | √ | √ | √ |
3 -> 添加数据条目
创建完对象类型后,您可在对象类型内添加数据条目(DataEntry),并配置数据所在的存储区。
支持手动创建和自动生成数据条目文件。
3.1 -> 手动创建数据条目文件
1. 右击“clouddb/dataentry”目录,选择“New > Cloud DB Data Entry”。
2. 在“Associated Cloud DB Object Type”栏选择需添加数据条目的对象类型,在“Enter Cloud DB Data Entry Name”栏定义数据条目文件名,完成后点击“OK”。
例如,选择刚刚创建的对象类型“objecttype1”,数据条目文件取默认名“d_objecttype1”。
如下图,“clouddb/dataentry”目录下生成并打开新建的数据条目JSON文件“d_objecttype1”,该文件中已为您预置好所属对象类型名称(“objecttype1”)与对象类型的字段名(“id”、“bookName”、“author”、“price”、“publishTime”、“shadowFlag”)。
3. 配置存储区和字段的值(即数据)。
- “cloudDBZoneName”:配置存储区名称。上图示例中的“default”表示添加数据条目至default存储区。支持修改,如下图“cloudDBZoneName1”。另外,在使用API访问云数据库编码时需要引用该字段。
- “objects”:配置当前对象类型中所有字段的值,即写入数据。一个对象(object)即为一条数据,您可以通过新建一个对象(object)来为字段赋新值,也可以修改某个对象(object)下字段的值(主键或加密字段的值不支持修改)。如下图,写入了两条数据。
字段 | 数据条目1 | 数据条目2 |
author | Nancy | Peter |
shadowFlag | true | false |
bookName | My Favorite Book | Your First English Book |
id | 10 | 20 |
price | 10.5 | 20.5 |
publishTime | 19961007 | 19961007 |
3.2 -> 自动生成数据条目文件
1. 右击对象类型JSON文件,选择“Generate Data Entry”。
依旧以对象类型“objecttype1”为例,其包含了“id”、“bookName”、“author”、“price”、“publishTime”、“shadowFlag”六个字段。
2. 在弹出的“New Cloud DB Data Entry”框内,为即将生成的数据条目文件定义名称。此处取默认值“d_objecttype1”为例。
如下图,“clouddb/dataentry”目录下自动为对象类型“objecttype1”生成数据条目文件“d_objecttype1”,该文件中已为您预置好所属对象类型名称(“objecttype1”)与对象类型的字段名(“id”、“bookName”、“author”、“price”、“publishTime”、“shadowFlag”)。
3. 配置存储区和字段的值(即数据)。
- “cloudDBZoneName”:配置存储区名称。上图示例中的“default”表示添加数据条目至default存储区。支持修改,如下图“cloudDBZoneName1”。另外,在使用API访问云数据库编码时需要引用该字段。
- “objects”:配置当前对象类型中所有字段的值,即写入数据。一个对象(object)即为一条数据,您可以通过新建一个对象(object)来为字段赋新值,也可以修改某个对象(object)下字段的值(主键或加密字段的值不支持修改)。如下图,写入了两条数据。
字段 | 数据条目1 | 数据条目2 |
author | Nancy | Peter |
shadowFlag | true | false |
bookName | My Favorite Book | Your First English Book |
id | 10 | 20 |
price | 10.5 | 20.5 |
publishTime | 19961007 | 19961007 |
4 -> 部署云数据库
完成数据条目创建后,可以直接部署该数据条目。也可以等所有对象类型和数据条目开发完成后,再统一批量部署到AGC云端。
说明
- 部署到AGC云端的存储区数量不得超过4个,否则会导致部署失败,提示“clouddb deploy failed. Reason is the number of CloudDBZone exceeds the limit.”错误。如AGC云端当前已存在4个存储区,请将数据部署到已有的存储区,或者删除已有存储区后再部署新的存储区。需要注意的是,删除存储区,该存储区内的数据也将一并删除,且不可恢复。
- 对象类型中的fieldType等字段信息,部署到AGC云端后,请勿在本地再做修改。例如,fieldType设置为String,对象类型部署成功后,又在本地修改fieldType为Integer,再次部署将失败,提示“clouddb deploy failed. Reason is existing fields cannot be modified.”错误。如需更改fieldType等字段信息,请先删除云端部署的对象类型。需要注意的是,删除云端对象类型,对象类型内添加的数据也将一并删除,且不可恢复。
部署云数据库的操作如下:
1. 右击“clouddb”目录,选择“Deploy Cloud DB”。
2. 可在底部状态栏右侧查看云数据库打包与部署进度。
耐心等待,直至出现“Deploy successfully”消息,表示云数据库已成功部署。
说明
云数据库部署成功后,DevEco Studio将自动从云侧下载云数据库的schema文件至“AppScope/resources/rawfile/schema.json”路径,该文件是云数据库端侧API必须引入的配置文件。
3. 在菜单栏选择“Tools > CloudDev”。
4. 在打开的CloudDev面板中,点击“Serverless > Cloud DB”下的“Go to console”,进入当前项目的云数据库服务页面。
5. 分别点击“对象类型”、“存储区”与“数据”页签,可查看到本地开发的云数据库资源均已成功部署至AGC云端。
还可以在AGC控制台继续编辑以上部署的云数据库资源。
对象类型“Post”所属存储区“Demo”、“objecttype1”所属存储区“cloudDBZoneName1”:
“d_Post.json”内的数据条目、“d_objecttype1.json”内的数据条目:
说明
部署对象类型或数据条目JSON文件,实际是部署JSON文件内包含的对象类型或数据条目。因此,在AGC控制台查看到的将是一个个对象类型或者一条条数据,而非JSON文件。
感谢各位大佬支持!!!
互三啦!!!
相关文章:

【HarmonyOS Next之旅】DevEco Studio使用指南(二十九) -> 开发云数据库
目录 1 -> 开发流程 2 -> 创建对象类型 3 -> 添加数据条目 3.1 -> 手动创建数据条目文件 3.2 -> 自动生成数据条目文件 4 -> 部署云数据库 1 -> 开发流程 云数据库是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和…...

批量导出CAD属性块信息生成到excel——CAD C#二次开发(插件实现)
本插件可实现批量导出文件夹内大量dwg文件的指定块名的属性信息到excel,效果如下: 插件界面: dll插件如下: 使用方法: 1、获取此dll插件。 2、cad命令行输入netload ,加载此dll(要求AutoCAD&…...
可视化大屏如何制作
超详细!手把手教你制作可视化大屏 在当今数字化时代,数据犹如一座蕴藏无尽价值的宝藏,而可视化大屏则是开启这座宝藏大门、让数据价值得以充分展现的关键钥匙。无论是企业运营监控、数据分析展示,还是项目成果汇报,可视…...

Goreplay最新版本的安装和简单使用
一:概述 Gor 是一个开源工具,用于捕获实时 HTTP 流量并将其重放到测试环境中,以便使用真实数据持续测试您的系统。它可用于提高对代码部署、配置更改和基础设施更改的信心。简单易用。 项目地址:buger/goreplay: GoReplay is an …...

Android Studio 解决报错 not support JCEF 记录
问题:Android Studio 安装Markdown插件后,报错not support JCEF不能预览markdown文件。 原因:Android Studio不是新装,之前没留意IDE自带的版本是不支持JCEF的。 解决办法: 在菜单栏选中Help→Find Actionÿ…...
SMT高速贴片机核心技术深度剖析
内容概要 在智能制造升级背景下,SMT高速贴片机的性能直接影响电子产品的生产效率和可靠性。本文将从微米级贴装精度的实现机制出发,探讨高速运动控制与精准定位的协同优化方案,同时分析视觉系统在多类型元件识别中的动态补偿策略。针对消费电…...

sigmastar实现SD卡升级
参考文章:http://wx.comake.online/doc/DD22dk2f3zx-SSD21X-SSD22X/customer/development/software/Px/zh/sys/P3/usb%20&%20sd%20update.html#21-sd 1、构建SD卡升级包 在project下make image完成后使用make_sd_upgrade_sigmastar.sh脚本打包SD卡升级包。 ./make_sd_up…...

kafka学习笔记(三、消费者Consumer使用教程——配置参数大全及性能调优)
本章主要介绍kafka consumer的配置参数及性能调优的点,其kafka的从零开始的安装到生产者,消费者的详解介绍、源码及分析及原理解析请到博主kafka专栏 。 1.消费者Consumer配置参数 配置参数默认值含义bootstrap.servers无(必填)…...
yarn、pnpm、npm
非常好,这样从“问题驱动 → 工具诞生 → 优化演进”的角度来讲,更清晰易懂。下面我按时间线和动机,把 npm → yarn → pnpm 的演变脉络讲清楚。 🧩 一、npm 为什么一开始不够好? 早期(npm v4 及之前&…...
JVM——Truffle:语言实现框架
引入 在编程语言的实现领域,传统的编译器和解释器设计往往面临着复杂性和性能优化的双重挑战。尤其是对于动态语言,解释器的效率问题一直是一个难以突破的瓶颈。而 Truffle 框架的出现,为这一难题提供了全新的解决方案。Truffle 是一个高性能…...
C++ STL vector容器详解:从原理到实践
引言 亲爱的小伙伴们,今天我要和大家分享一个C编程中的"神器"——vector容器!作为STL(标准模板库)中最常用的容器之一,vector就像是一个"超级数组",既有数组的高效随机访问特性&#…...
视频压制(Video Encoding/Compression)
视频压制(Video Encoding/Compression) 视频压制是指通过特定的算法和技术,将原始视频文件转换为更小体积或更适合传播的格式的过程。其核心目的是在尽量保持画质的前提下,减少视频的文件大小,或适配不同播放设备、网络环境的需求…...

【论文笔记】Transcoders Find Interpretable LLM Feature Circuits
Abstract 机制可解释性(mechanistic interpretability)的核心目标是路径分析(circuit analysis):在模型中找出与特定行为或能力对应的稀疏子图。 然而,MLP 子层使得在基于 Transformer 的语言模型中进行细粒度的路径分析变得困难。具体而言,…...
音视频融合中的语音分离技术实现
音视频融合中的语音分离技术实现 一、任务概述 语音分离是音频信号处理的核心任务,旨在从混合音频中分离出目标语音。音视频融合技术通过结合视觉信息(如嘴唇运动)显著提升分离效果。本方案将实现一个基于深度学习的音视频融合语音分离系统。 二、系统架构 #mermaid-svg-3…...

每天总结一个html标签——a标签
文章目录 一、定义与使用说明二、支持的属性三、支持的事件四、默认样式五、常见用法1. 文本链接2. 图片链接3. 导航栏 在前端开发中,a标签(锚点标签)是最常用的HTML标签之一,主要用于创建超链接,实现页面间的跳转或下…...
在Babylon.js中创建3D文字:简单而强大的方法
引言 在3D场景中添加文字是许多WebGL项目的常见需求。Babylon.js提供了多种创建3D文字的方法,其中使用TextBlock结合平面网格是一种简单而高效的方式。本文将介绍如何使用Babylon.js的GUI系统在3D空间中创建美观的文字效果。 方法概述 Babylon.js的GUI系统允许我…...
CSS 渐变完全指南:从基础概念到实战案例(线性渐变/径向渐变/重复渐变)
一、什么是 CSS 渐变? 渐变是网页设计中常用的视觉效果,指两种或多种颜色之间的平滑过渡。CSS 提供了强大的渐变功能,无需依赖图片即可创建复杂的色彩过渡效果,主要分为线性渐变和径向渐变两大类。 二、线性渐变(Line…...
初识Docker:容器化技术的入门指南
初识Docker:容器化技术的入门指南 一、Docker是什么:容器化技术的核心概念二、Docker的核心优势2.1 环境一致性2.2 高效部署与快速迭代2.3 资源利用率高 三、Docker的安装与基本使用3.1 安装Docker3.2 Docker基本概念3.3 第一个Docker容器体验 四、Docke…...

android binder(1)基本原理
一、IPC 进程间通信(IPC,Inter-Process Communication)机制,用于解决不同进程间的数据交互问题。 不同进程之间用户地址空间的变量和函数是不能相互访问的,但是不同进程的内核地址空间是相同和共享的,我们可…...

行业分析---小米汽车2025第一季度财报
1 背景 最近几年是新能源汽车的淘汰赛,前短时间比亚迪再次开始了降价,导致一片上市车企的股价大跌,足见车圈现在的敏感度。因此笔者会一直跟踪新势力车企的财报状况,对之前财报分析感兴趣的读者朋友可以参考以下博客:…...

边缘计算网关支撑医院供暖系统高效运维的本地化计算与边缘决策
一、项目背景 医院作为人员密集的特殊场所,对供暖系统的稳定性和高效性有着极高的要求。其供暖换热站传统的人工现场监控方式存在诸多弊端,如人员值守成本高、数据记录不及时不准确、故障发现和处理滞后、能耗难以有效监测和控制等,难以满足…...
GO环境配置
Go 语言环境安装指南(Windows 版) 以下是在 Windows 系统上安装 Go 语言环境的完整步骤: 准备工作 操作系统要求:Windows 7 或更高版本(推荐 Windows 10/11)系统架构:64位(…...
`docker run`、`docker start`、`docker exec` 区别
🧠 先给你一句话理解: docker run ≈ docker create docker start docker exec(第一次) ✅ 三者的区别一览表 命令作用类比真实生活常用场景docker run创建 启动 执行命令(一次性)你买了一台新电脑&am…...

简单了解string类的特性及使用(C++)
string的特性 string类不属于STL,它属于标准库 但由于它具有数据结构的特性,所以从归类的角度,可以将string类归类到容器里面去 在C标准库中,std::string 是一个特化的类型,实际上是 std::basic_string 的别名。std…...

FastAPI+Pyomo实现线性回归解决饮食问题
之前在 FastAPI介绍-CSDN博客 中介绍过FastAPI,在 Pyomo中线性规划接口的使用-CSDN博客 中使用Pyomo解决饮食问题,这里将两者组合,即FastAPI在服务器端启动,通过Pyomo实现线性回归;客户端通过浏览器获取饮食的最优解。…...

16.FreeRTOS
目录 第1章 FreeRTOS 实时操作系统 1.1 认识实时操作系统 1.1.1 裸机的概念 1.1.2 操作系统的概念 1.2 操作系统的分类 1.3 常见的操作系统 1.4 认识实时操作系统 1.4.1 可剥夺型内核与不可剥夺型内核 1.4.2 嵌入式操作系统的作用 1.4.3 嵌入式操作系统的发展 1.4.4…...

Redis最佳实践——购物车优化详解
Redis在电商购物车高并发读写场景下的优化实践 一、购物车业务场景分析 典型操作特征 读/写比例 ≈ 8:2高峰QPS可达10万单用户最大商品数500操作类型:增删改查、全选/反选、数量修改 技术挑战 高并发下的数据一致性海量数据存储与快速访问实时价格计算与库存校验分…...

【计算机网络】传输层UDP协议
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】应用层协议Http——构建Http服务服务器 🔖流水不争,争的是滔滔不…...

安全漏洞修复导致SpringBoot2.7与Springfox不兼容
项目基于 springboot2.5.2 实现的,用 springfox-swagger2 生成与前端对接的 API 文档;pom.xml 中依赖如下 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…...

从法律层面剖析危化品证书:两证一证背后的安全逻辑
《安全生产法》第 24 条明确规定,危化品单位主要负责人和安全管理人员 “必须考核合格方可上岗”。这并非仅仅是行政要求,而是通过法律来筑牢安全防线。在某危化品仓库爆炸事故中,由于负责人未持证,导致事故责任升级,企…...