解密分布式数据库的不为人知的一面
自互联网进入web2.0时代以来,数据库作为核心底层基础设施软件,也经历了蓬勃发展期。从早期的单机关系数据库到NoSQL,再到今天的NewSQL,分布式数据库领域无论是技术还是场景都发生了巨大的变化。在当前的云原生时代,拥有分布式功能似乎是任何软件系统的标准。
尤其是在当前基础软件国产化的浪潮中,国产数据库百花齐放,有超越弯道的趋势。什么是分布式数据库?拆开解释。
一、分布式
举例来说,一个熟悉的场景,比如完成软件开发。
小企业的做法是聘请全栈工程师,做所有的工作。但是这种人虽然什么都懂,但是没有特别精通的方向,很容易达到能力上限。
一支大队伍中,通常会有很多角色。(UI、前端,后端,DBA、运行维护等)。这类人构成分布式结构,协调完成共同任务。协调人员为项目经理或部门领导。
这样做的好处是:
职责分离:每个人都要各司其职,做自己擅长的事。
平稳扩展:任何一个环节缺人都要定点补充。
能力:能够处理更大、更多的项目。
当然,有利也有弊:
沟通:沟通费用增加,需要规范的工作模式。
调度:如何有效地协调所有人员。
一致性:如何保证上下游人员名单的一致性。
概念差异:分布式和集群
一提到分布,就不得不说另一个与之相关的概念,那就是集群。很多初学者无法很好地理解集群与分布的区别。
以前面的例子为例。如果小公司的全栈工程师出现一些异常现象(辞职、出走、不堪重负等。),老板会考虑雇佣更多这样的人,从而形成一个集群。好处是他们可以做更多的工作(负荷分流)和互补(可扩展性),但本质上他们还是什么都做。
事实上,分布式和集群可以一起使用。例如,在上面的大团队示例中,每个角色可以配置多个人,从而形成一个分布式集群。
二、数据库
说白了,数据库就是管理数据的区域,就像我们生活中存放货物的仓库一样。我们应该按照一定的规则(写数据)整齐地排列货物,这样我们就可以获取快递邮件(检查数据)。
在计算机世界里,数据通常是按照二维表组织的,我们称之为关系模型,然后我们可以使用结构化的查询语言。(SQL)对这些信息进行各种关系操作,以获得预期的结果。这是关系数据库,是目前应用最广泛的数据库。另外,相信你也听说过其他类型的数据库,比如KV型、文档型、时间序列型、图形数据库等等。
最常见的数据库是每个人使用的Excel文档。一个文档可以看作是一个数据库,每个表都是一个数据表,表中的列是一个字段,每一行都是存储的数据。
“分布式”和“数据库”乘法
对我来说,“分布式”和“数据库”并非相加,而是乘积。
传统的子数据库、子表方案和各种分块方案都可视为伪分布式(添加),与真正的分布式数据库有本质区别。
最大的不同在于分布式事务。单个数据库的事务在一个节点上完成,分布式数据库需要多个节点协同工作。
以典型的银行转账情景为例:
A想把100元转给B,但A的帐号信息存储在节点A,B的数据存储在节点B。
通过事务可以轻松完成单个数据库。
分布式环境下的交易应考虑各种网络问题和数据一致性。对于客户端来说,交易操作的简单性还是要保证的。整个转移操作与单机数据库一致,所有故障都要透明处理。
分布式数据库继承了传统单机数据库的关键特性,具有处理分布式结构的能力。理论上,所有的需求都可以通过横向扩展来解决,这是大数据高并发场景下诞生的产物。虽然起步较晚,但可以预见它将是数据库的下一个发展方向。
延伸 · 阅读
- 2024-11-14帕里布(Paribu)面向全球机构客户推出数字资产托管服务
- 2024-11-14长沙唯德医院携手查国章教授:中西医结合新探索,推动前列腺疾病诊疗创新
- 2024-11-13聚合·数字化的力量!数字中国服务联盟走进山石网科
- 2024-11-13树立医者典范 礼赞大医精诚 访国宝级中医—周培富
- 2024-11-13紫光展锐与影目科技共创AI眼镜开放平台,重新定义智能穿戴
- 2024-11-132024年北京十大律师事务所排名公布