当前位置:网站首页>带你深度了解AGC云数据库
带你深度了解AGC云数据库
2022-06-11 15:36:00 【Gauss松鼠会】
业务介绍
传统的移动应用开发,开发者需要从头开始构建每一个服务,开发工作量大,门槛高。开发者在写应用逻辑之外,还需要解决数据管理、端云数据同步和服务器部署维护等难题。
Cloud DB是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力。在保证数据的可用性、可靠性、一致性,以及安全等特性基础上,能够实现数据在客户端和云端之间的无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同的应用。同时,Cloud DB作为AppGallery Connect解决方案的一部分,为AppGallery Connect平台构建了MBaaS(Mobile Backend as a Service,移动后端即服务)能力。从而让应用开发者聚焦于应用本身的业务,极大的提升开发者的生产效率。
主要功能
Cloud DB是一款端云协同的数据库产品,支持数据在端云、多端之间无缝同步,并为应用提供离线支持,以帮助您快速构建端云、多端协同的应用。
- 灵活的同步模式
Cloud DB支持缓存和本地两种数据同步模式。在缓存模式下,端侧数据是云侧数据的子集,如果允许持久化,查询的结果将会自动缓存至端侧;本地模式下,数据只存储在本地,不和云侧数据进行同步。
- 强大的查询能力
Cloud DB支持丰富的谓词查询,可以包含多个链式过滤条件,可以将过滤和排序或者限定返回结果集对象数量功能结合使用。在缓存模式下,可以指定从云侧存储区或者本地存储区查询数据;在本地模式下,直接从本地存储区查询数据。
- 实时更新
Cloud DB在缓存模式下,您可以通过对需要关注的数据进行侦听,并利用Cloud DB的数据同步功能,将发生变化的数据在端云、多设备间进行实时更新。
- 离线支持
Cloud DB在缓存模式下,如果允许缓存持久化,当设备离线时,应用对云端数据库的查询会默认转为从本地查询。当设备恢复在线状态时,Cloud DB会将所有本地写入的数据自动同步至云端数据库。
- 扩展性
- 安全性
工作原理
Cloud DB是一款支持端云数据协同管理、可扩展的Serverless数据库产品,提供简单易用的多平台原生SDK,您的Android应用、iOS应用、Web应用、快应用和快游戏可以通过SDK直接访问云侧数据库。同时,Cloud DB还支持通过Server SDK直接管理云侧数据,实现云侧数据的高效管理。
Cloud DB采用基于对象模型的数据存储结构。数据以对象的形式存储在不同的存储区中,每一个对象,都是一条完整的数据记录。对象类型用于定义存储对象的集合,不同的对象类型对应的不同数据结构。存储区是一个独立的数据存储区域,每个存储区拥有完全相同的对象类型定义。您可以通过AppGallery Connect控制台,定义对象类型、创建存储区和管理数据。Cloud DB支持多种数据类型,包括简单的字符串、数值以及文本等。

Cloud DB还提供了多重数据安全策略。基于隐私或者敏感数据的全程加密管理能力,加密字段的数据在端侧会被加密,然后再以密文形式发送并存储到云侧,只有应用用户依据其输入的密码才能获取密钥信息并访问自己的加密数据。基于角色的权限管理模型,来保证数据的安全。通过预置4种角色和3种权限,简化您的权限管理操作。您可以通过AppGallery Connect控制台即可简单的为每个对象类型设置独有的权限。
平台支持说明
一级分类 | 二级分类 | 是否已支持 |
|---|---|---|
客户端SDK |
| |
| ||
| ||
| ||
| ||
Server SDK |
| |
| ||
跨平台框架 |
| |
| ||
| ||
| ||
lonic |
| |
第三方库(由第三方实现) |
| |
|
数据模型
Cloud DB是一款基于对象模型的数据库,采用存储区、对象类型和对象三级结构。在开发应用时,每个应用都会实例化一个Cloud DB实例,基于该实例,您可以创建多个存储区。

存储区
存储区(即Cloud DB zone)是一个独立的数据存储区域,多个数据存储区相互独立。每个存储区拥有完全相同的对象类型定义,您可以根据应用的需要自定义存储区中存储的对象。
对象类型
对象类型(即ObjectType)用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型,Cloud DB会在每个存储区实例化一个与之结构相对应的对象类型,用于存储对应的数据。
对象
对象(即CloudDBZoneObject)是Cloud DB的基本操作单元,每一个对象,都是一条完整的数据记录。
数据类型
Cloud DB支持多种数据类型,如表1所示,描述了支持的各种数据类型及其排序说明。
数据类型 | 说明 | 排序说明 |
|---|---|---|
String | 描述:字符串类型 取值范围:最大长度200 说明 如果字符串长度超过200,建议使用Text类型。 | 采用 UTF-8 编码的字节顺序 |
Boolean | 描述:布尔类型 取值范围:
| false < true |
Byte | 描述:单字节整型 取值范围:-128 ~ +127 | 数字顺序 |
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 | 字节数组,一般用于文件类型的数据存储,如图片、文档和视频等。在端侧时,使用Android开发应用时,以byte[]表示为字节数组。 | 采用 UTF-8 编码的字节顺序 |
Text | 文本类型。 | |
Date | 日期类型。 | 时间顺序 |
说明
由于JavaScript不支持数据类型“Long”,Web SDK通过引入第三方开源组件实现支持数据类型“Long”的能力。“Long”类型的使用方法请参考https://github.com/dcodeIO/long.js。
权限管理
Cloud DB支持对所有用户的访问进行鉴权,保障应用数据的安全。云侧访问Cloud DB的用户角色默认为“管理员”角色,即从AppGallery Connect控制台、云函数和Server端访问Cloud DB的角色,该角色默认拥有所有权限。端侧为应用程序运行端,端侧的数据操作有严格的安全规则限制,其数据的读写权限根据云侧权限管理表进行控制。
Cloud DB支持基于缓存模式和本地模式的应用开发,不同的模式下,数据的权限管理也不一致。
- 在缓存模式下,在端侧和云侧建立数据同步通道后,端侧会将云侧的权限管理表同步至端侧,端侧会按照该权限管理表对数据进行权限控制。
- 在本地模式下,端侧的数据操作不受云侧权限管理表的影响,端侧对其包含的数据具有全部的操作权限。
说明
在缓存模式的如下场景,端侧用户的数据操作权限如下所示:
- 用户安装应用后,端侧应用第一次和云侧建立同步通道之前,端侧用户无任何权限。在端侧应用从云侧获取到权限管理表之后,端侧用户权限按照权限配置表进行分配。
- 端侧用户因AppGallery Connect认证信息失效(如离线持续时间超过认证信息的有效时间)或者注销AppGallery Connect认证后,端侧用户的角色由“认证用户”转变为“所有人”,此时端侧用户所拥有的权限与“所有人”角色的权限一致。
Cloud DB定义了所有人、认证用户、数据创建者和管理员4种角色,query、upsert(包含新增和修改)和delete 3种权限。
角色 | query | upsert | delete |
|---|---|---|---|
所有人 | * | – | – |
认证用户 | * | * | √ |
数据创建者 | * | * | √ |
管理员 | * | * | * |
- 所有人:代表所有用户,包含认证和非认证用户等。该角色默认拥有query权限,不可配置upsert和delete权限。
- 认证用户: 经过AppGallery Connect登录认证的用户。该角色默认拥有query权限,可自定义配置upsert和delete权限。
- 数据创建者:经过认证的数据创建用户,每条数据都有其对应的数据创建人(即应用用户),每个数据创建者仅可以upsert或者delete自己创建的数据,不能upsert或者delete他人创建的数据。数据创建者的信息保存在数据记录的系统表中。该角色默认拥有所有权限,且可自定义配置所有权限。
- 管理员:应用开发者,主要是指通过AppGallery Connect控制台或FaaS(Function as a Service,函数即服务)侧访问Cloud DB的角色。该角色默认拥有所有权限,且可自定义配置所有权限。管理员可以管理并配置其他角色的权限。
说明
- 开发端侧应用时,如果要使用认证用户的相关权限,需要开通AppGallery Connect认证服务。
- 当对象类型中设置了加密字段之后,表示开启全程加密功能,此时“所有人”和“认证用户”角色将不会拥有query、upsert和delete权限,且不允许修改。
- 认证用户包含匿名认证和正式注册两种,建议您在使用全程加密功能时,仅针对正式注册的用户开放该功能,不建议将全程加密功能开放给匿名用户。因为使用该功能时,需要用户输入密码,Cloud DB会使用该密码派生出密钥信息,并将密钥信息的密文和加密后的用户数据密文保存在云侧,密钥信息将会和用户帐号会进行绑定,只有该用户依据密码才能获取密钥信息并访问自己的加密数据。匿名用户每次登录后的帐号都是动态变化的,即每次登录都是一个新的用户,即使在云侧存储了密钥信息,下次登录也不能使用保存在云侧的密钥信息。
更多内容请参见文档中心
边栏推荐
- 02 _ Log system: how does an SQL UPDATE statement execute?
- [creation mode] abstract factory mode
- 零基础自学软件测试,我花7天时间整理了一套学习路线,希望能帮助到大家..
- [system safety] XLII PowerShell malicious code detection series (4) paper summary and abstract syntax tree (AST) extraction
- 英伟达终于开源GPU内核模块代码,网友:难以置信
- 【0006】title、关键字及页面描述
- 数据库资源负载管理(上篇)
- 一文教会你数据库系统调优
- 06 _ Global lock and table lock: Why are there so many obstacles to adding a field to a table?
- From 0 to 1, master the mainstream technology of large factories steadily. Isn't it necessary to increase salary after one year?
猜你喜欢

拿到20K我用了5年,面了所有大厂,这些高频面试问题都帮你们划出来啦
![Introduction to thread practice [hard core careful entry!]](/img/1c/1f6422ba8fbeeb1c094ba7b1da2b78.png)
Introduction to thread practice [hard core careful entry!]

02 _ Log system: how does an SQL UPDATE statement execute?

Verification code is the natural enemy of automation? Ali developed a solution

Mysql(九)Your password has expired. To log in you must change it using a client that supports expired

你还不懂线程池的设计及原理吗?掰开揉碎了教你设计线程池

MOS transistor 24n50 parameters of asemi, 24n50 package, 24n50 size

I have used 20K for 5 years and met all major manufacturers. These high-frequency interview questions have helped you figure out

Idea2021.1 installation tutorial

leetcode 120. 三角形最小路径和
随机推荐
19. Insertion et suppression d'un arbre de recherche binaire
Idea2021.1 installation tutorial
从内核代码了解SQL如何解析
How to batch insert 100000 pieces of data
[azure application service] nodejs express + msal realizes the authentication experiment of API Application token authentication (AAD oauth2 idtoken) -- passport authenticate()
【MongoDB】4. Usage specification of mongodb
Don't you understand the design and principle of thread pool? Break it up and crush it. I'll teach you how to design the thread pool
Is it possible to use multiple indexes together in a query?
Talk about the principle of QR code scanning login
How to write elegant secondary classification for enterprise development [small case of meituan]
The research results of Professor xuweixin from the school of atmosphere of Sun Yat sen University on extreme precipitation caused by weak convection were reported by science highlights
Uniapp develops wechat applet from build to launch
英伟达终于开源GPU内核模块代码,网友:难以置信
【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate('oauth-bearer', {session: false})
将配置导出到FTP或TFTP服务器
Qcustomplot 1.0.1 learning (1) - Download and use qcustomplot
河北 黄金寨景区新增“AED自动除颤器”保障游客生命安全!
MOS transistor 24n50 parameters of asemi, 24n50 package, 24n50 size
Verification code is the natural enemy of automation? Ali developed a solution
2022.02.28

