当前位置: 首页 > article >正文

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

如上图所圈,这次主要学习云数据库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.kler.cn/a/568560.html

相关文章:

  • 【JAVA面试题】JDK、JRE、JVM 三者区别和联系
  • 软件高级架构师 - 设计模式
  • Transformer 代码剖析9 - 解码器模块Decoder (pytorch实现)
  • LLMs之DeepSeek:DeepSeek-V3/R1推理系统的架构设计和性能统计的简介、细节分析之详细攻略
  • Electron+Vite+React+TypeScript开发问题手册
  • 利用 LangChain 和一个大语言模型(LLM)构建一个链条,自动从用户输入的问题中提取相关的 SQL 表信息,再生成对应的 SQL 查询
  • 基于MATLAB 的GUI设计
  • 【2025-03-02】基础算法:二叉树 相同 对称 平衡 右视图
  • Pytorch实现之结合mobilenetV2和FPN的GAN去雾算法
  • Windows搭建jenkins服务
  • 【Linux】【网络】不同子网下的客户端和服务器通信其它方式
  • DeepSeek-R1 大模型实战:腾讯云 HAI 平台 3 分钟极速部署指南
  • .net开源商城_C#开源商城源码_.netcore开源商城多少钱
  • 机器学习:线性回归,梯度下降,多元线性回归
  • Django数据迁移
  • 从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(八) 聊天框用户列表
  • Java 网络八股(2) TCP6大核心机制/异常处理
  • 基于单片机的智能宿舍管理系统(论文+源码)
  • 【3天快速入门WPF】11-附加属性
  • 【MongoDB】在Windows11下安装与使用