三、关系型数据库架构介绍
1、数据库架构发展
数据库架构变化
随着业务规模增大,数据库存储的数据量和承载的业务压力也不断增加,数据库的架构需要随之变化,为上层应用提供稳定和高效的数据服务
2、单机架构
单机架构
为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式
把应用和数据服务分开,应用服务可以增加服务器数量,进行负载均衡,增大系统并发能力
优点
部署集中,运维方便
缺点
可扩展性
数据库单机架构扩展性能只有纵向扩展(Scale-up),通过增加硬件配置来提升性能
但单台主机的硬件可配置的资源会遇到上限
存在单点故障
扩容的时候往往需要停机扩容,服务停止
硬件故障导致整个服务不可用,甚至数据丢失
单机会遇到性能瓶颈
3、分组架构-主备
分组架构-主备
主备机架构:
数据库部署在两台服务器,其中承担数据读写服务的服务器称为"主机"
另外一台数据库利用数据同步机制把主机的数据复制过来,称为"备机"
同一时点,只有一台服务器对外提供数据服务
优点
应用不需要针对数据库故障来增加开发量
相对单机架构提升了数据容错性
缺点
资源浪费,备机和主机同等配置,但长期范围内基本上资源限制,无法利用
性能压力还是集中在单机上,无法解决性能瓶颈问题
当出现故障时候,主备机切换需要一定的人工干预或者监控
4、分组架构-主从
主从式架构
部署模式和主备机模式相似,备机(Backup)上升为从机(Slave),对外提供一定的数据服务
通过读写分离方式分散压力
写入、修改、删除操作,在写库(主库)上完成
把查询请求,分配到读库(从机)
优点
提升资源利用率,适合读多写少的应用场景
在大并发读的使用场景,可以使用负载均衡在多个主机间进行平衡
从机的扩展性比较灵活,扩容操作不会影响到业务进行
缺点
延迟问题,数据同步到从机数据库时会有延迟,所以应用必须能够容忍短暂的不一致性,对于一致性要求非常高的场景是不适合的
写操作的性能压力还是集中在主机上
主机出现故障,需要实现主从切换,人工干预需要响应时间,自动切换复杂度较高
5、分组架构-多主
多主架构
数据库服务器互为主从,同时对外提供完整的数据服务
优点
资源利用率较高的同时降低了单点故障的分享
缺点
双主机都接受写数据,要实现数据双向同步,双向复制同样会带来延迟问题,极端情况下有可能数据丢失
数据库数量增加会导致数据同步问题变得极为复杂,实际应用中多见双机模式
6、共享存储多活架构
共享存储的多活架构(Shared Disk)
一种特殊的多主架构
数据库服务器共享数据存储,而多个服务器实现均衡负载
优点
多个计算服务器提供高可用服务,提供了高级别的可用性,可伸缩性,避免了服务器集群的单点故障问题
比较方便的横向扩展能够增加整体系统并行处理能力
缺点
实现技术难度大
当存储器接口带宽达到饱和的时候,增加节点并不能获得更高的性能,存储IO容易成为整个系统的性能瓶颈
7、分片(Sharding)架构
分片架构主要表现形式就是水平数据分片架构
把数据分散在多个节点上的分片方案,每一个分片包含数据库的一部分,称为一个shard
多个节点都拥有相同的数据库结构,但不同分片的数据之间没有交集,所有分区数据的并集构成数据总体
常见的分片算法有:根据列表值,范围取值和Hash值进行数据分片
优点
数据分散在集群内的各个节点上,所有节点可以独立性工作
8、无共享(Share-Nothing)架构
无共享架构
集群中每一个节点(处理单元)都完全拥有自己独立的CPU/内存/存储,不存在共享资源
各节点(处理单元)处理自己本地的数据,处理结果可以向上层汇总或者通过通信协议在节点间流转
节点是相互独立的,扩展能力强,整个集群拥有强大的并行处理能力
9、MPP架构(Massively Parallel Processing)
MPP:大规模并行处理(Massively Parallel Processing)
MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果
特征
任务并行执行,分布式计算
常见的MPP产品
无共享Master: Vertica,Teradata
共享Master: Greenplum,Netezza