数据库与集群

数据库与集群数据库集群往往是同构的系统 要求集群各节点都具有相同的操作系统和数据库系统版本 甚至补丁包的版本也要求保持一致

大家好,欢迎来到IT知识分享网。

数据库与集群

1、数据库集群

概念:数据库集群,顾名思义,就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。

2、数据库中间件

在这里插入图片描述
中间件封装指的是独立一套系统出来,实现读写操作分离和数据库服务器连接的管理。

数据库中间件的方式具备的特点是:

  • 能够支持多种编程语言。
  • 数据库中间件要支持完整的 SQL 语法和数据库服务器的协议(例如,MySQL 客户端和服务器的连接协议)。
  • 所有的数据库操作请求都要经过中间件,中间件的性能要求也很高。
  • 数据库主从切换对业务服务器无感知,数据库中间件可以探测数据库服务器的主从状态。例如,向某个测试表写入一条数据,成功的就是主机,失败的就是从机。

3、垂直分表&分库

3.1 垂直分表

垂直分表定义:把一张表按列分为多张表,多张表通过主键进行关联,从而组成完整的数据。分表之后,每张表的结构都不相同。

通常按以下原则进行垂直拆分:

  • 把不常用的字段单独放在一张表;
  • 把text,blob等大字段拆分出来放在附表中;
  • 经常组合查询的列放在一张表中;

垂直分表带来的性能提升主要集中在热门数据的操作效率上,而且磁盘争用情况减少。

3.2 垂直分库

读写分离分散了数据库读写操作的压力,但没有分散存储压力,当数据量达到千万甚至上亿条的时候,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在这几个方面:

  • 数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会下降。
  • 数据文件会变得很大,数据库备份和恢复需要耗费很长时间。
  • 数据文件越大,极端情况下丢失数据的风险越高(例如,机房火灾导致数据库主备机都发生故障)。

基于上述原因,单个数据库服务器存储的数据量不能太大,需要控制在一定的范围内。为了满足业务数据存储的需求,就需要将存储分散到多台数据库服务器上。

如果按照业务分库,用户、商品、订单三个业务模块分在不同的服务器上存储,能够分散存储和访问压力,但同时也带来了新的问题:

  • 不同数据库的表不能join连接;
  • 事务问题:原本在同一个数据库中不同的表可以在同一个事务中修改,业务分库后,表分散到不同的数据库中,无法通过事务统一修改。
  • 成本备份数据问题。

分库,不同库的表肯定是存储在不同的数据库服务器里的。

4.水平分表&分库

同一业务的单表数据也会达到单台数据库服务器的处理瓶颈。例如,淘宝的几亿用户数据,如果全部存放在一台数据库服务器的一张表中,肯定是无法满足性能要求的,此时就需要对单表数据进行拆分。​

再次分库?但是从业务角度分析,目前情况已经无法再次垂直分库。只能进行水平分表和分库操作。

单表进行切分后,是否要将切分后的多个表分散在不同的数据库服务器中,可以根据实际的切分效果来确定,并不强制要求单表切分为多表后一定要分散到不同数据库服务器中:

  • 单表切分为多表后,新的表即使在同一个数据库服务器中,也可能带来可观的性能提升,如果性能能够满足业务要求,是可以不拆分到多台数据库服务器的,毕竟在上面业务分库的内容看到业务分库也会引入很多复杂性的问题;
  • 如果单表拆分为多表后,单台服务器依然无法满足性能要求,那就不得不再次进行业务分库的设计了。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125559.html

(0)
上一篇 2025-09-26 13:45
下一篇 2025-09-26 14:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信