云服务培训五-数据库服务

devtools/2025/3/4 5:31:04/

如上图所圈,这次主要学习云数据库RDS for MySQL、GaussDB和GeminiDB相关内容。

 

 

一、结构化数据、非结构化数据

选择数据库时,首先从模型上分析,是否涉及事务处理、复杂的查询关联,还是数据量大、有并发访问需求。同理,其余指标如访问性能、类型等类似分析。 

结构化数据:有标准的格式

=> 关于数据治理,在拿到数据后,首先要分析该数据是结构化还是非结构化的,根据类型选择对应的服务。

=> 非结构化数据放到存储(如OBS、EVS)里面存放;

=> 结构化数据,完全结构化就用关系型数据库半结构化用非关系型数据库

华为云数据库选择

云原生通过容器化、微服务架构、自动化运维等技术手段,实现了应用的快速部署、弹性扩展、高效运维和跨云部署

 

二、关系型数据库服务RDS

 

利用数据库搭建如下简单架构。是否存在问题?问题出在哪里呢?

 

=> 明显看出,上述架构存在一个故障单点,即RDS。

很好理解,应用服务器不是单点,一台坏了剩下一台也能继续服务,但如果RDS坏了,整个系统就不能正常工作了。 

既然如此,又该如何解决呢?主备部署

=> 主备部署,简单理解,就是当主数据库出现故障时,RDS服务会自动把访问接口切换到备用服务器上,然后把主服务器替换掉,变成一台新的备用服务器。通过该机制,当一台服务器坏掉就会被自动的替换,甚至可达秒级切换。

 => 主备服务器可同时放在一个可用区里,以获得较好的同步性;也可选择放在不同的可用区,从而获得跨可用区的容灾能力。

因为可用区可能会坏掉,有了多可用区的选择,就能在一个可用区坏掉时使用另外一个可用区的备数据库服务器,以保持业务连续性。

主备部署这么好,就没有啥缺点吗?

=> 成本增加,如多部署一台服务器、多了一些数据同步的成本。

回到最开始的问题,如下是基于主备部署实现的高可用架构的落地方案。

=> 只有主数据库向应用服务器提供服务,即承载所有数据库的访问流量;而备数据库则随时准备切换上来,平常不参与工作。

自动Binlog手动两种备份方式,如下:

 

 

 

RDS可以通过创建只读副本的方式,建立读写分离的数据库系统。

读写分离是一种常见的数据库架构设计,通过将读操作和写操作分开到不同的数据库实例,来提升系统性能和可扩展性。读写分离将读操作分配到读数据库,而写操作由写数据库处理,该方式能有效分担数据库的负载,避免单个数据库成为瓶颈,且能实现读操作和写操作的并行处理,提高系统的整体处理能力和响应速度。

6、只读副本实现水平扩展

同样,可以通过创建只读副本的方式实现水平扩展,如下:

 

以上为主备部署+只读副本 

RDS for MySQL产品架构

三、GaussDB (for MySQL) 

除了 RDS for MySQL,还有没有其他数据库服务和解决方案呢?GaussDB (for MySQL)

 

 RDMA:远程直接内容访问

注:RPO(Recovery point objective),恢复点目标,是指业务系统所能容忍的数据丢失量。 

 

四、GaussDB 云数据库

 

 

注:GaussDB和GaussDB (for MySQL)是两种不同的数据库服务,不要混淆。 

 

 

五、非关系型数据库:云数据库GeminiDB

1、非关系型数据库特点

① 每条数据都是一个结构文档。

② 表格中的记录之间没有逻辑关系。

③ 擅长对完整值进行哈希定位而非复杂查询。

数据库GeminiDB架构
1)高可用

=> 当计算节点故障:秒级的故障切换;

=> 当存储节点故障:存储三副本,单点故障整体系统仍可运行。

2)弹性扩容

=> 扩容计算节点:计算节点无状态,可快速扩容;

=> 扩容存储节点:共享存储,一键扩容,不中断业务。

 

非关系型数据库使用注意
① 设计好数据键和索引定义。快速定位,避免全表查找。 

=> 避免热键;

=> 避免数据过于复杂; 

=> 不论数据量多少,毫秒级数据定位。

② 如果需要,在应用层进行逻辑锁和数据逻辑关联。

③ 在压力提高时,合理利用集群来分散压力。 

=> 利用分片算法快速定位数据在集群中的位置;

=> 数据设计上让访问压力分散到集群内各个节点,避免热分区。

六、数据库管理服务 DAS

 

 


http://www.ppmy.cn/devtools/164379.html

相关文章

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump

ngx_conf_add_dump 定义在src\core\ngx_conf_file.c static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) {off_t size;u_char *p;uint32_t hash;ngx_buf_t *buf;ngx_str_node_t *sn;ngx_conf_dump_t *cd;has…

git的恢复命令

右键查看 找到版本的 提交ID git reset --soft c097b534188163194fa0e00a20d9e0f07ad82549

nginx+keepalived负载均衡及高可用

一、环境准备 主机名ip地址备注openEuler-1 192.168.121.11(本机) 192.168.131.11(心跳连接) nginx主负载均衡调度器openEuler-2 192.168.121.12(本机) 192.168.131.12(心跳连接) n…

Redis缓存一致性难题:如何让数据库和缓存不“打架”?

标题:Redis缓存一致性难题:如何让数据库和缓存不“打架”?(附程序员脱发指南) 导言:当数据库和缓存成了“异地恋” 想象一下:你刚在美团下单了一份麻辣小龙虾,付款后刷新页面&#…

JSX 的基础概述、优势与工作原理(babel解析为JS)

概念: JSX 是 Js 与 XML(HTML) 的缩写,表示在Js 代码中编写HTML模板结构,它是react中编写UI模版的方式。 比如在 index.js 中的函数 App 中,写HTML代码,就是JSX的形式: 优势 兼顾…

Express + MongoDB 实现用户登录

使用 User.findOne({ username }) 根据用户名查找用户,如果用户不存在,返回 404 错误。调用 user.comparePassword(password) 方法比较用户输入的密码和数据库中存储的加密密码,如果密码不匹配,返回 401 错误。 // 处理用户登录的…

怎么进行mysql的优化?

MySQL 的优化是一个系统性的工作,涉及多个层面,包括查询优化、索引优化、配置优化、架构优化等。以下是一些常见的 MySQL 优化方法: 查询优化 避免全表扫描:确保查询能够使用索引,避免 SELECT *,只选择需要…

在Pycharm中将ui文件修改为py文件

在Pycharm中将ui文件修改为py文件 有些时候,我们需要把QTDesigner生成的.ui文件修改为.py文件 在一些教程中,通常使用cmd打开终端修改,或者是有一些人写了一些脚本来修改 这里我们可以使用pycharm来快速的修改 首先,我们在pyc…