解密分布式数据库的不为人知的一面

2024-05-20 来源:网络 阅读:1231

自互联网进入web2.0时代以来,数据库作为核心底层基础设施软件,也经历了蓬勃发展期。从早期的单机关系数据库到NoSQL,再到今天的NewSQL分布式数据库领域无论是技术还是场景都发生了巨大的变化。在当前的云原生时代,拥有分布式功能似乎是任何软件系统的标准。

尤其是在当前基础软件国产化的浪潮中,国产数据库百花齐放,有超越弯道的趋势。什么是分布式数据库?拆开解释。

一、分布式

举例来说,一个熟悉的场景,比如完成软件开发。

小企业的做法是聘请全栈工程师,做所有的工作。但是这种人虽然什么都懂,但是没有特别精通的方向,很容易达到能力上限。

一支大队伍中,通常会有很多角色。(UI、前端,后端,DBA、运行维护等)。这类人构成分布式结构,协调完成共同任务。协调人员为项目经理或部门领导。

这样做的好处是:

职责分离:每个人都要各司其职,做自己擅长的事。

平稳扩展:任何一个环节缺人都要定点补充。

能力:能够处理更大、更多的项目。

当然,有利也有弊:

沟通:沟通费用增加,需要规范的工作模式。

调度:如何有效地协调所有人员。

一致性:如何保证上下游人员名单的一致性。

概念差异:分布式和集群

一提到分布,就不得不说另一个与之相关的概念,那就是集群。很多初学者无法很好地理解集群与分布的区别。

以前面的例子为例。如果小公司的全栈工程师出现一些异常现象(辞职、出走、不堪重负等。),老板会考虑雇佣更多这样的人,从而形成一个集群。好处是他们可以做更多的工作(负荷分流)和互补(可扩展性),但本质上他们还是什么都做。

事实上,分布式和集群可以一起使用。例如,在上面的大团队示例中,每个角色可以配置多个人,从而形成一个分布式集群。

二、数据库

说白了,数据库就是管理数据的区域,就像我们生活中存放货物的仓库一样。我们应该按照一定的规则(写数据)整齐地排列货物,这样我们就可以获取快递邮件(检查数据)

在计算机世界里,数据通常是按照二维表组织的,我们称之为关系模型,然后我们可以使用结构化的查询语言。(SQL)对这些信息进行各种关系操作,以获得预期的结果。这是关系数据库,是目前应用最广泛的数据库。另外,相信你也听说过其他类型的数据库,比如KV型、文档型、时间序列型、图形数据库等等。

最常见的数据库是每个人使用的Excel文档。一个文档可以看作是一个数据库,每个表都是一个数据表,表中的列是一个字段,每一行都是存储的数据。

“分布式”和“数据库”乘法

对我来说,“分布式”和“数据库”并非相加,而是乘积。

传统的子数据库、子表方案和各种分块方案都可视为伪分布式(添加),与真正的分布式数据库有本质区别。

最大的不同在于分布式事务。单个数据库的事务在一个节点上完成,分布式数据库需要多个节点协同工作。

以典型的银行转账情景为例:

A想把100元转给B,但A的帐号信息存储在节点AB的数据存储在节点B

通过事务可以轻松完成单个数据库。

分布式环境下的交易应考虑各种网络问题和数据一致性。对于客户端来说,交易操作的简单性还是要保证的。整个转移操作与单机数据库一致,所有故障都要透明处理。

分布式数据库继承了传统单机数据库的关键特性,具有处理分布式结构的能力。理论上,所有的需求都可以通过横向扩展来解决,这是大数据高并发场景下诞生的产物。虽然起步较晚,但可以预见它将是数据库的下一个发展方向。


延伸 · 阅读