分布式数据库算是现在的一个新的趋势。
一、了解
1、概念
百度上解释:“分布式系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。”
划重点:多台计算机、局部数据库。
用直白的话来说,比起以前的数据库形式,分布式数据库,是在一个数据库下再进行分片,将一个数据库的内容分为多个,每个分片上存储着部分数据库的内容,从而使整个数据库变得更加“高可用,可扩展,高一致性、可维护、大容量”。
2、分类(https://blog.csdn.net/xuheng8600/article/details/79976043)
(1)基于Hadoop下的分布式数据库:Greenplum(海量数据库)
(2)基于mysql下的一些分布式数据库,如MariaDB和GoldenDB(这是中兴的一个产品)
(3)Vertica:基于列存储的数据库
二、原理
1、数据库分片的一些概念:
(1) 单库:数据库本库
(2) 分片(sharding):一个数据库分成了多个数据库集群,属于水平拆分,解决了扩展性的问题。(引入分片,就引入了数据路由和分区键的概念。分表解决的是数据量过大的问题,分库解决的是数据库性能瓶颈的问题。)
一个数据库集群由多个group组成
(3) 分表(group):主节点和备用节点,在这里有一个主从复制的问题。一般分布式数据库是半同步复制。
拓展一下,一般主从复制涉及到几个分类:同步复制、异步复制、半同步复制。Mysql默认的是异步复制。
同步复制:主节点完成任务,要等所有次节点都复制完并写到log,才能返回客户端。性能低,但保证了数据一致性。
同步复制:主节点完成任务,不用等次节点复制,直接返回客户端。性能高,但易造成数据一致性错误,易丢失数据。
半同步复制:主节点完成任务,只用等一个次节点复制,直接返回客户端。性能高,但易造成数据一致性错误,易丢失数据。
其它扩展:
在这里还有一些其它的数据库概念和新技术,例如集群分布。
按照百度上的说法,“数据库集群,就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。”
MGR是集群分布,也算是mysql下的一个分支,mysql group republication,它的概念,应该说是将一个数据库,集群分布,从而分为多个数据库,而每个数据库的内容都是一致的,这样来说,它更多的是一个备份的作用。
网友评论