关系型数据库架构介绍
【摘要】 数据库的架构场景
关系型数据库架构介绍
数据库架构特点对比
数据库架构发展
单机架构
-
早期互联网的LAMP(Linux,Apache,MySQL,PHP)架构的服务器就是最典型的单机架构的使用
-
为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式,把应用和数据服务分开。
-
优点
-
部署集中,运维方便。
-
-
缺点
-
可扩展性:数据库单机架构扩展性只有纵向扩展 (Scale-up)。通过增加硬件配置来提升性能,但单台主机的硬件可配置的资源会遇到上限。 -
存在单点故障:扩容的时候往往需要停机扩容,服务停止。硬件故障导致整个服务不可用,甚至数据丢失。 -
性能瓶颈。
-
分组架构 - 主备
-
数据库部署在两台服务器,其中承担数据读写服务的服务器称为“主机”。 -
另外一台服务器利用数据同步机制把主机的数据复制过来,称为“备机”。 -
同一时刻,只有一台服务器对外提供数据服务。 -
优点 -
应用不需要针对数据库故障来增加开发量。 -
相对单机架构提升了数据容错性。
-
-
缺点 -
资源浪费,备机和主机同等配置,但长期范围内基本上资源限制,无法利用。 -
性能压力还是集中在单机上,无法解决性能瓶颈问题。 -
当出现故障时候,主备机切换需要一定的人工干预或者监控。
-
分组架构 - 主从
-
部署模式和主备机模式相似,备机(Backup)上升为从机(Slave),对外提供一定的数据服务。 -
通过读写分离方式分散压力: -
写入、修改、删除操作,在写库(主机)上完成; -
把查询请求,分配到读库(从机)。
-
-
优点 -
提升资源利用率,适合读多写少的应用场景。 -
在大并发读的使用场景,可以使用负载均衡在多个从机间进行平衡。 -
从机的扩展性比较灵活,扩容操作不会影响到业务进行。
-
-
缺点 -
延迟问题,数据同步到从机数据库时会有延迟,所以应用必须能够容忍短暂的不一致性。对于一致性要求非常高的场景是不适合的。 -
写操作的性能压力还是集中在主机上。 -
主机出现故障,需要实现主从切换,人工干预需要响应时间,自动切换复杂度较高。
-
分组架构 - 多主
-
多主架构(双活,多活架构) -
数据库服务器互为主从,同时对外提供完整的数据服务。
-
-
优点 -
资源利用率较高的同时降低了单点故障的风险。
-
-
缺点 -
双主机都接受写数据,要实现数据双向同步。双向复制同样会带来延迟问题,极端情况下有可能数据丢失。 -
数据库数量增加会导致数据同步问题变得极为复杂,实际应用中多见双机模式。
-
共享存储多活架构(特殊的多主架构)
-
共享存储的多活架构(Shared-Disk)
-
一种特殊的多主架构。解决了主从设备之间数据同步带来的数据一致性问题 -
数据库服务器共享数据存储,而多个服务器实现均衡负载。
-
-
优点
-
多个计算服务器提供高可用服务,提供了高级别的可用性。可伸缩性,避免了服务器集群的单点故障问题。 -
比较方便的横向扩展能够增加整体系统并行处理能力。
-
-
缺点
-
实现技术难度大。 -
当存储器接口带宽达到饱和的时候,增加节点并不能获得更高的性能,存储IO容易成为整个系统的性能瓶颈。
-
-
较为成功的案例:Oracle的RAC(Real Application Cluster), 微软的SQL Server Failover Cluster。
-
GaussDB(for MySQL)采用多节点集群的架构,集群中有一个写节点(主节点)和多个读节点(只读节点),各节点共享底层的存储(DFV)
Sharding是Shared-Nothing架构的基础,只有对数据进行分片才可能对实现集群的Shared-Nothing。
Shared-Nothing概念是从资源独立性角度来描述架构 Sharding则是从数据的独立性角度来描述架构 MPP是并行计算的角度来描述架构,是并行计算技术在分布式数据库上的应用和体现。
分片(Sharding)架构
-
分片架构主要表现形式就是水平数据分片架构 -
把数据分散在多个节点上的分片方案,每一个分片包括数据库的一部分,称为一个shard。 -
多个节点都拥有相同的数据库结构,但不同分片的数据之间没有交集,所有分区数据的并集构成数据总体。 -
常见的分片算法有:根据列表值,范围取值和Hash值进行数据分片。
-
-
优点 -
数据分散在集群内的各个节点上,所有节点可以独立性工作。
-
无共享(Shared-Nothing)架构
-
集群中每一个节点(处理单元)都完全拥有自己独立的CPU/内存/存储,不存在共享资源。 -
各节点(处理单元)处理自己本地的数据,处理结果可以向上层汇总或者通过通信协议在节点间流转。 -
节点是相互独立的,扩展能力强。整个集群拥有强大的并行处理能力。
MPP架构 (Massively Parallel Processing)
-
MPP:大规模并行处理(Massively Parallel Processing) -
MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。 -
特征 -
任务并行执行,分布式计算。
-
-
常见的MPP产品 -
无共享Master:Vertica,Teradata。 -
共享Master:Greenplum,Netezza。
-
Teradata,Netezza是软硬件一体机。GaussDB(DWS),Greeplum,Vertica是软件版MPP数据库
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)