
16.常见的8种分布式数据库系统在分布式方面的差异
虽然很多数据库系统都使用了分布式,但是该分布式和Hadoop HDFS的数据分布式存储还是有很大的差异的。OceanBase通过分区表实现在机房内部的打散分布,TIDB通过TIKV Region=96M~144M,将数据打散到所有TIKV节点,并使用Raft协议实现3副本,达梦数据库没有副本,需要单独对每个节点创建备库,达梦数据库的分布式系统相比其他分布式系统来说,就显得比较差劲。在一个SET内部
1.概要
本部分主要描述常见的8种分布式系统在分布式存储方面的差异。
(1)TDSQL的分布式
TDSQL MYSQL版默认部署主备架构
TB 或 PB级的海量数据库场景
支持INNODB 或 TDSTORE存储引擎。
单实例支持EB级海量存储
最高可达20倍压缩率
分布式多表JOIN,小表广播,分布式事务,SQL穿透
赤兔监控,上百项数据库监控指标。
扁鹊系统,智能的DBA诊断系统
SET:TDSQL最小数据单元,包含一主N备N+1个数据节点
数据节点上部署MYSQL数据库服务。
Agent属于旁路模块,主要承担mysql实例的状态监控。
tdstore是存储节点,负责用户数据的存储,它是一个基于Multi-Raft协议实现的分布式存储集群,
Region是TDSTORE存储和管理数据的最小单位。
1)ZOOKEEPER 存储集群的实例的动态数据。
2)SET :一主N备作为一个数据单元。
Mysql传统复制存在问题:
当master或Slave不可用时,以上三种传统数据复制方式均有几率引起数据不一致。
解决方案:
MAR强同步复制方案是腾讯自主研发的基于Mysql协议的并行多线程强同步复制方案,只有
当备机数据完全同步(日志)后,才由主机给予应用事务应答,保障数据正确安全。
MAR: 强同步方案主要特点如下:
一致性的同步复制,保证节点间数据强一致性。
对业务层面完全透明,业务层面无需做读写分离或同步强化工作。
将串行同步线程异步化,引入线程池能力,大幅度提高性能
支持集群架构
支持自动成员控制,故障节点自动从集群中移除。
支持自动节点加入,无需人工干预。
每个节点都包含完整的数据副本,可以随时切换。
无需共享存储设备。
TDSQL 的分布式通过zk,SET 实现。多个SET,即多个一主N备组成的分布式。
与传统的分布式有差异。Region是最小单位。
(2).TIDB的分布式
1)PD,TIDB SERVER,TIKV ,TIFLASH;
2)TIKV 节点上通过MultiRaft协议实现。RaftLog,Raftdb;
3)底层使用LSM tree的数据结构。Update和DELETE都是插入新行,不会删除数据。
4)内存悲观锁实现分布式事务。
5)每个Region:96~144M;
(3)OceanBase的分布式
1)ZONE为基本单位,每个zone类似一个机房,有独立完整的副本。
2)主要通过分区表将数据分散在一个ZONE里面的多个节点上。
3)使用raft协议实现高可用。
4)多个节点组成一个ZONE,即可以机房,需要ZONE的3倍资源,即三个机房。
5)创建资源单元,指定一个规格的资源使用情况。
6)创建资源池:池绑定ZONE和资源单元。
7)基于资源池创建租户。
(4).Hadoop的分布式
1)三副本,通过128M的大小将文件切分,存储在任意三个节点上。实现分布式。
2)由分布式ZOOKEEPER集群,HDFS集群,YARN集群,MapReduce应用程序实现。
(5).CLICKHOUSE 分布式
mergetree
合并树引擎,合并树种的数据按列存储,每个列数据以二进制形式单独压缩存储,性能强。
replicationMergetree
基于mergeTree复制引擎,在分布式高可用中结合ZK进行副本复制。
Distributed:
分布式引擎,此类表不存储数据,相当于视图功能,写入数据到分布式表中 ,
会把请求分布道集群里的各个分片中,再查询的时候会做查询转发再聚合返回。
列式存储。
1)纯分片:多个分片,没有副本。
2)1分片+1副本+分布式。
3)分片+副本+分布式+zookeeper
(6).GREENPLUM 分布式
GreenPlum数据库由Master Servers 和Segment Servers组成。
--Master Server
建立与客户端的连接和管理,负责在segment 分配工作负载,整合处理结果,返回客户端。
SQL的解析并形成执行计划,执行计划向segment分发收集segment的执行结果。
Master不存储业务数据,数据通过分布策略分布到不同的segment中。
Master只存储全局系统元数据信息。
--segments节点。
每个段存放部分用户数据。
一个系统可以有多个segment主机
一台segment主机可以有多个segment服务。
用户不能直接存取访问segment
所有对segment的访问都需要经过master
每个segment的数据冗余存放在另一个segment上,数据实时同步。
当primary segment失败时,mirror segment将自动提供服务。
(7).GaussDB分布式
通过手工指定分片的个数,每个分片有一主两备。
多个分片将数据打算实现分布式。
GTM 分布式事务协调器。
CN,奇数个实现分发功能。
DN,数据节点存储真实数据。
(8).达梦分布式数据库
主库:多个节点将数据打散,所有的节点都只是存储表的一部分数据。这些节点之间没有冗余。
需要单独创建一个备库集群。每个节点对应主库的每个节点。形成1对1的主备集群。
2.总结
虽然很多数据库系统都使用了分布式,但是该分布式和Hadoop HDFS的数据分布式存储还是有很大的差异的。HDFS 是将数据全部扫描到所有的节点,按照128m 的块存储。而分布式数据库,为了实现机房级别的容灾机制,和冗余方案。每个机房都保留了完整的属于副本。OceanBase通过分区表实现在机房内部的打散分布,TIDB通过TIKV Region=96M~144M,将数据打散到所有TIKV节点,并使用Raft协议实现3副本,达梦数据库没有副本,需要单独对每个节点创建备库,达梦数据库的分布式系统相比其他分布式系统来说,就显得比较差劲。TDSQL的分布式,每个数据集使用一个集合SET:包含一主两备或者一主一备。通过配置多个SET,实现数据库的分布式。针对主库,将所有的数据通过HASH方式打散分布到所有的主库节点。在一个SET内部,通过一主两备或者一主一备实现SET内部的高可用,也是比较别致的一种使用方法。虽然各个方式不同,但是都通过一定的条件,实现了分布式和高可用,也能够水平扩容和缩容。
更多推荐
所有评论(0)