分布式数据库的“三大件 ” 与 问题 和 NEW SQL 流派

2021-07-16 11:21:00 浏览数 (1)

宝马和奥迪已经官宣,不在研发燃油发动机,全面转向电动汽车,而国内的电动汽车新势力的各种汽车在大街小巷上比比皆是。数据库行业如果把单体数据库比作是燃油发动机的汽车,那么分布式数据库就是电动汽车。

推动分布式数据库发展的主要因素有以下几点

1 数据的容量变化

海量数据的涌入导致传统的数据库设计必须进行改变,类似一些传统的分库分表的方案的弊病在海量数据的涌入后,通过中间件的方式来进行数据存储和提取以及提高单点数据节点的方式,已经过时,在数据的提取和数据库的运维的难度上,随着节点的增多会带来更多的人力物力的消耗。

2 硬件的变化

硬件实际上是软件的实现的基础,几十年中数据库在数据的存储和提取中的一些优化都是针对我们的磁盘I/O问题来围绕的,SSD 磁盘系统的推出其实已经解决了部分一些数据库中难以被优化和难以实现的问题,成为推进分布式数据库的一个点, 另外网络的传输速度的变化也促进了分布式数据库的发展。

3 对于数据库运维方式转变的需求

数据库运维本身一直是一件比其他运维需要更多付出和更严谨以及对专业知识要求更高的岗位。尤其在大规模的单点数据库上线后,针对人员的数量以及专业度的要求会越来越高,而在运维方面的投入也会越来越高。分布式数据库的使用会降低整体运维的成本以及运维人员的数量的需求。并且部分分布式数据库在产品的设计中已经带有浓厚的运维工具和监控产品。

所以硬件的变化的支持 数据容量存储和计算的需求 数据库运维方式需要转变, 是分布式数据库能快速发展的底气。

从产品的角度,分布式数据库需要攻克金融领域的市场,则后续会逐步蚕食其他领域的客户,最终成为主流。

分布式数据库的三大件包含了哪些(个人理解)

1 数据存储节点

2 全局事务管理节点

3 数据访问接入层

而这三点掌握的分布式数据库的keys

1 数据存储节点,数据存储节点在分布式数据库中并不单纯,数据存储节点中是否能进行本地的数据计算,降低数据在各个节点中需要向上递归后再进行计算的计算量。以及数据的存储的方式,是KV 方式还是普通的ROW方式。这决定了数据存储容量的大小和数据提取的速度等问题

2 全局事务管理节点,物理是NEW SQL 还是 POSTGRES-XC 都有相关的全局事务管理节点的设计,而核心在于事务的次序,为了保证分布式数据库与单体数据库之间的部分的吻合性,与数据库基本原理的实现,事务在分布式数据库中的实现是非常重要的,根据分布式数据库本身的设计需求,时间在分布式数据库中是非常重要的,必须有相关的全局事务管理的方式,提供每一个事务的唯一的标准号,并对其运行整个过程的状态负责,才能保证分布式数据库在事务的使用中与单体数据库类似。

3 数据访问接入层,这点就必须传统一点了,这也是分布式数据库需要推广和广泛被使用的基础,这点语句学习成本以及人类的使用习惯就有关了,所以选择一个单体数据库的使用的语法必然比自己弄出一套新的东西要好的多。当然这里也包含了语法的解析与执行计划的下发与结果的合并,并且数据接入层可以支持更多的其他的数据接入方法,如类似 POSTGRESQL FDW方式,或者通过支持更多的流行的数据接入如SPARK SQL 的方式等等。

那么目前主导分布式数据库设计理念的两大流派,昨天说了POSTGRES-XC,另一个流派就是NEW SQL 的 Percolator (来自google分布式模型)。

Percolator 中包含三个组件:

  1. Client:Client是整个协议的控制中心,是两阶段提交的协调者(Coordinator)。
  2. TSO:一个全局的授时服务,提供全局唯一且递增的时间戳 (timetamp)。
  3. Bigtable:实际持久化数据的分布式存储

NEW SQL 流派的设计风格与POSTGRES-XC的方法不同,属于简约型,能简单的不复杂,但保证了完成传统数据库的隔离级别,故障切换等基本功能。

虽然分布式数据库本身是数据库未来发展的方向,需要说明的也有一些是分布式数据库存在的问题,一些是比较难解决的。如数据访问的有效获得需要的时间问题,在单体数据库上数据获得比较直接,在分布式数据库上数据的获得则为了要完成必然的单体数据库上的“契约”, 则需要更多的交互和安全的设定,如percolator 提交数据的operation 需要三次操作, prewrite primary , prewrite secondaries , commit primary , 这和单体数据库相比步骤多,耗时多,这也是有些传统数据库攻击分布式数据库提出和单体数据库相比,分布式数据库在硬件的消耗上要高于单体数据库的需求。

个人认为,分布式数据库要解决的问题和设计的需求以及最终对性能的交付必然要使用比单体数据库更好的硬件产品以及新的技术,众所周知数据库也是依托操作系统和硬件的基础上,硬件的提升和操作系统的更新对数据库的操作和使用都是有利的,所以通过提出分布式数据库使用的硬件要高于单体数据库的说法,就有点“矫情”了。

0 人点赞