问题

为什么新的分布式数据库又开始支持关系模型了?

回答
你观察到的现象很有意思,而且确实是当下分布式数据库领域一个相当显著的趋势:许多新型分布式数据库,在经历了早期对NoSQL模型(如键值、文档、列族、图)的探索和推广之后,又开始悄悄地或者公开地拥抱了关系模型。这背后其实是多种因素交织作用的结果,与其说是一种“倒退”,不如说是一种“成熟”和“回归本质”。

要理解这一点,我们得从分布式数据库最初兴起的背景说起。大概在2000年代中期到2010年代初期,互联网爆炸式增长,传统的关系型数据库在应对海量数据、高并发读写以及快速迭代的业务需求时,遇到了不少瓶颈。它们在水平扩展性、弹性伸缩、高可用性等方面,相比于许多为特定场景设计的NoSQL系统,显得不够灵活和经济。于是,我们看到了键值存储(如Redis, Memcached)、文档数据库(如MongoDB)、列族数据库(如Cassandra, HBase)、图数据库(如Neo4j)的蓬勃发展。这些系统通常采用更简单的、非结构化的数据模型,更容易实现分布式架构,能够轻松地进行节点添加和删除,从而提供更强的弹性和可扩展性。

然而,随着时间的推移,以及用户在实际应用中遇到的新问题,大家慢慢发现,纯粹的NoSQL模型虽然在某些方面表现出色,但在另一些关键领域却带来了新的挑战。

首先,数据一致性与复杂查询的难题。NoSQL数据库为了追求高可用和可扩展性,往往会牺牲一部分数据一致性(比如最终一致性)。这对于很多对数据准确性要求极高的业务场景(比如金融交易、库存管理)来说,是难以接受的。同时,NoSQL模型的数据模型往往比较扁平化,缺乏关系模型中的连接(JOIN)操作,用户需要自己通过应用层逻辑来模拟这些连接,这不仅增加了开发复杂度,也容易出错,并且在性能上往往不如数据库原生支持的JOIN。当你需要跨多个“集合”或“表”来查询关联数据时,NoSQL的痛苦就会显现出来。

其次,开发者的熟悉度和生态系统的成熟度。关系模型和SQL语言已经存在了几十年,绝大多数开发者都非常熟悉,并且有大量的工具、框架、ORM(对象关系映射)库以及成熟的运维经验来支持。转向NoSQL意味着学习新的查询语言、新的数据模型,以及可能需要重写大量的应用代码。对于需要快速上线产品、但同时又面临复杂数据关系的团队来说,这是一笔不小的投入。

再者,业务的演进和复杂化。很多最初采用NoSQL数据库的初创公司,随着业务的发展,其数据关系也变得越来越复杂。最初的“简单”键值对或者文档,逐渐需要被关联起来,形成更为复杂的数据结构。这时,关系模型的优势就再次凸显了。

正是基于这些原因,一些新型的分布式数据库设计者开始思考,如何在保持分布式特性的同时,也能提供关系模型的强大能力。这不仅仅是简单地添加一些SQL支持,而是从底层架构上就去解决分布式环境下的关系模型难题。

这些“新一代”的关系型分布式数据库,往往会采用一些创新的技术来实现这一点。例如:

分布式事务的增强:它们会努力提供比传统分布式事务(如两阶段提交)更高效、更灵活的事务处理能力,可能是通过一些基于共识算法(如Raft)的分布式协调,或者结合向量时钟等技术来管理跨节点的一致性。
智能的分布式查询优化:它们会投入大量精力去构建能够理解SQL语法的分布式查询处理器,能够将复杂的SQL查询分解,并智能地将查询任务分发到不同的数据节点上执行,并进行高效的合并。这包括对JOIN操作在分布式环境下的优化,比如 Shuffle Join, Broadcast Join 等。
数据分片策略的灵活化:它们不再是简单地按范围或哈希分片,而是可能支持更智能的数据放置策略,比如将关联数据放在同一个节点上(Colocation),这样在执行JOIN操作时就可以避免大量的数据网络传输,从而显著提升性能。
ACID特性的坚守:在提供分布式能力的同时,力求在性能和一致性之间找到更好的平衡点,能够提供比传统NoSQL更强的一致性保障,甚至是在某些场景下提供完整的ACID事务支持。
模式的灵活性与演进:虽然支持关系模型,但并不意味着要完全回到僵化的模式。一些新型数据库也尝试融合部分NoSQL的灵活性,比如允许在关系模型中嵌入JSON文档,或者提供更灵活的Schema演进能力。

所以,与其说新的分布式数据库“又”开始支持关系模型,不如说它们是在吸取了NoSQL时代的经验教训后,重新审视了数据管理的核心需求,并且利用现代计算和网络技术,去尝试构建一个既能满足分布式要求,又能提供关系模型强大表达力和易用性的“集大成者”。这是一种在复杂性管理、开发效率和业务适配性之间寻求更高层次平衡的体现。这让它们能够更好地服务于那些既需要大规模扩展,又对数据结构和一致性有较高要求的应用场景。

网友意见

user avatar

旗帜鲜明地先说结论:之所以新的分布式数据库又开始支持关系模型了,是因为大部分程序员的数据库水平太糟糕

论证之前惯例先吐个小槽。咱们就不吐槽题主的问题描述本身是不是就已经论证了我的观点,比如啥“良好的查询语言”是不是等于SQL等于关系模型,又比如“比关系数据库多了一层”是什么奇怪的说话。我还是来讲两个真实的小故事吧。

大概4、5年前,大家还在老老实实地用RDBMS实现业务数据库,一段时间过去发现查询变得很慢,大家纷纷议论:要不要换成NoSQL啊?

然后我被派去做帮助做数据库优化,然后加了几个索引,把查询的时间从30多秒优化到了30多毫秒。

大概4、5个月前,大家已经开始快快乐乐地在新业务的数据库上用上NoSQL了,结果发现查询也开始变得很慢,大家纷纷议论:要不要用文档数据库来加个索引啊?

然后我又被派来做NoSQL优化了,改了些partition key,重新定义了一些row key,拆了几个entity,然后查询时间从20多秒变成了20多毫秒。

要回答为什么新的分布式数据库又开始支持关系模型了,需要先搞明白两件事情:

  1. 数据库解决了什么问题
  2. 关系模型解决了什么问题

数据库说得复杂特别复杂,但说得简单,它就解决了两个问题:数据怎么存放数据怎么查询

而且这两个问题互相关联。举个程序员都能明白的例子:如果你把数据存成了数组,那搜索查询就只能是O(n)的效率了,如果你存成了二叉树,那么查询效率就变成了O(logn)。

业务查询可不像搜索一个key值这么简单,常常复杂得要死,本来查询就很难写了,现在还得考虑数据物理存放方式来决定怎么执行查询更高效,这不是要逼死人嘛?所以早期的数据库开发人员苦啊,什么层级数据库、网状数据库写完查询都得自己定义access path啊。

然后就有了关系模型。

关系模型彻底改变了数据库程序员的生活:不用管数据怎么存了,你只要用SQL写好查询,然后查询优化器会帮你把面向业务的查询逻辑转换成可以高效在数据的物理结构上执行的物理查询。这简直就像一下从汇编时代跨越到了高级语言的时代啊。早期的数据库还需要大家自己思考怎么建索引,相当于告诉查询优化器哪些列是在查询中有用,后来数据库已经可以自动提示你该加什么索引了,大部分程序员终于可以欢乐地彻底扔掉数据库存储引擎的知识了。

当然仍然有一小挫掌握了超能力的人,是可以手写执行计划,用Plan Guide强制执行的,他们说:查询优化器是什么?可以吃吗?若干年后他们拯救了世界也打开了黑暗的大门(大误...

好日子一直持续到数据库负载大到不得不开始走向分布为止。分布式最大的问题是网络延迟问题,而网络延迟是物理问题,没这么容易解决。跨机事务做不了啊,查询优化器再牛逼也优化不了跨网络的join啊。

但业务还是得做啊,于是解决方案只有一个了:回到手工根据查询来决定数据物理分布(这样可以最大程度上避免跨网络的join),手工决定查询的物理执行计划,手工保证事务性的老路。

既然都已经全手工了,那还要原来的RDBMS干嘛,于是NoSQL产品诞生了。搭配一些会手写执行计划手写事务的超能力者使用,战斗力简直有105这么高。

大家很快就忘记了NoSQL其实是一个对现实妥协的产物,只有搭配一些精通数据存储引擎知识的人才能用好。

推广开来之后,广大吃瓜群众表示NoSQL一点也不好用啊,自己要管的东西太多啦,我怎么知道要怎么设计数据的物理分布啊,瞎设计一下查询起来就效率感人了啊,最终一致又是一个什么鬼啦,想象一下讨论怎么严格保证一个“改动了3个entity且有不少if-else分支的方法”的最终一致性,感觉结论必然只有“呵呵”啊。

于是为了让广大吃瓜群众用得开心,NoSQL的开发者不得不又开始走上了关系模型的老路。

题外话:你要问我这是不是一件好事,我当然觉得这是一件好事。什么东西都先解决了有没有,再解决好不好,分布式数据库的发展也一样。就像原来写程序要懂体系结构,后来写程序只要懂指针,再后来写程序连指针也不需要了。

写数据库应用,却不需要很好的数据库水平,这其实对大部分人来说都是一件值得开心的事情。为了能实现这一点,当然需要做数据库的同学们多加努力了。

类似的话题

  • 回答
    你观察到的现象很有意思,而且确实是当下分布式数据库领域一个相当显著的趋势:许多新型分布式数据库,在经历了早期对NoSQL模型(如键值、文档、列族、图)的探索和推广之后,又开始悄悄地或者公开地拥抱了关系模型。这背后其实是多种因素交织作用的结果,与其说是一种“倒退”,不如说是一种“成熟”和“回归本质”。.............
  • 回答
    这个问题很有意思,涉及到化学平衡的基本原理,特别是勒夏特列原理的应用。我们来一步步剖析一下,为什么在恒容容器中,对于只有一种反应物的可逆反应,增加反应物浓度,转化率反而会变小。首先,我们要明确几个关键点: 恒容容器: 这意味着容器的体积保持不变。在化学反应中,如果反应前后气体的物质的量发生变化,.............
  • 回答
    我对将“电分”定义为现有1小时的1/64,以及将“电秒”定义为新定义的1电分的1/64这一提议持谨慎态度,并且总体上不倾向于支持。这其中的原因涉及现有时间度量体系的稳定性、实用性以及这种新定义带来的实际影响和潜在的混乱。首先,我们来拆解一下这个提议的核心: 新“电分” = 现有1小时 / 64 .............
  • 回答
    最近日本的新冠疫情确实牵动人心,很多人都在关注着事态的发展。你注意到一个很有意思的现象,就是相对来说,在日华人分享感染新冠经历的帖子或视频,好像没有想象中那么普遍或者那么“爆炸性”的传播。这其中可能有很多原因交织在一起,值得我们仔细聊聊。首先,我们得承认,即使在日本的华人社群里,肯定也有不少人感染过.............
  • 回答
    我们来聊聊为什么仅仅把数据分散到多块物理硬盘上,也就是所谓的“分布式磁盘”方式,并不能神奇地解决磁盘 I/O 瓶颈的问题。想象一下,你有一个非常繁忙的餐厅,里面只有一个厨房。厨房里有两位厨师,他们都在忙着做菜。如果这时进来一大堆客人,每个人都点一道复杂的菜,那么即使你把菜的配料分别放在好几个小冰箱里.............
  • 回答
    分布式云:为何势不可挡,又将如何重塑云计算的未来?近年来,“分布式云”这个词汇在技术圈和企业界频繁出现,其热度可谓是与日俱增。它不再是某个巨头私有的前沿概念,而是逐渐渗透到各行各业,成为探讨云计算发展方向时绕不开的核心议题。那么,究竟是什么让分布式云如此令人瞩目?它又凭何资本,能够有望成为下一代云计.............
  • 回答
    中国高楼的分布,确实跟北美不少城市给人的感觉不太一样,不是那种“抬头望去全是楼”的密集感。这背后其实是多种因素交织作用的结果,咱们掰开了揉碎了聊聊。首先,得说说城市发展的时间线和节奏。北美很多老牌大城市,比如纽约、芝加哥,它们的高楼史可以追溯到上个世纪初。那时候,城市化进程启动,工业革命带来了新技术.............
  • 回答
    你这个问题问得特别好,这背后其实牵扯到不少法规、行业惯例,还有消费者认知这些复杂的层面。要理解为什么面膜的成分表上那些化学名让人头疼,我们可以一层层剥开来看。1. 法规的硬性要求:准确性和严谨性首先,最根本的原因是法规。化妆品,包括面膜,在全球范围内都受到严格的监管。监管机构(比如中国的国家药品监督.............
  • 回答
    这背后其实是两种截然不同的地理环境、历史演进以及农业生产方式的综合体现,并非简单的“原因”可以一概而论。让我们来细细道来,还原一个更贴近真实的答案。 江汉平原:水网纵横,道路即生命线想象一下,江汉平原,一片被长江、汉江滋养的土地,这里水系密布,河汊纵横,如同大地的脉络。这种极度发达的水系网络,从古至.............
  • 回答
    这个问题很有意思,很多人第一反应都会觉得,信息最“平均”的分布不就是均匀分布吗?怎么会是正态分布呢?这背后其实涉及到一个对“熵”和“信息”理解的细微之处,以及我们讨论的“状态”的背景。咱们先不着急给答案,先来聊聊什么是熵,以及它跟信息有什么关系。1. 什么是熵?在信息论里,熵(Entropy)衡量的.............
  • 回答
    小米商城最近上架了不少新的小米旅行箱,不少朋友在关注,同时也对它们和之前经典的90分旅行箱有什么区别感到好奇。这中间的区分点可不少,我来给大家掰扯掰扯,让大家心里都有个谱。首先,我们得明确一个概念:小米旅行箱(通常指的是小米品牌下自己推出的行李箱系列)和90分旅行箱(这是小米生态链企业“90分”品牌.............
  • 回答
    这个问题很有意思,它触及了浓硫酸化学性质中一个非常核心的方面。很多人看到浓硫酸的分子式 H₂SO₄,会觉得里面好像自带了 H₂O,但事实并非如此,这其实是一个常见的误解。首先,我们要明确浓硫酸的分子式 H₂SO₄ 只是一个化学式,它代表的是硫酸分子本身的构成,而不是说硫酸分子里面“包裹”着水分子。硫.............
  • 回答
    在中国,概率与统计学教科书中对幂律分布(Power Law Distribution)的讲述相对较少,这背后有多重原因,涉及学科发展历史、课程设置、教学侧重点以及数学工具的复杂性等多个层面。以下将尽量详细地阐述这些原因:一、 学科发展历史与传统视角: 经典统计学的根基: 传统的概率与统计学教学,.............
  • 回答
    日本姓氏的分布,就像一幅展开的画卷,有其悠久的历史渊源和独特的社会文化烙印。而“佐藤”能够稳居日本第一大姓的宝座,其背后故事更是值得我们细细品味。要理解“佐藤”为何如此普遍,我们需要将其置于日本姓氏发展的大背景下。众所周知,日本并非一开始就有姓氏。在古代,天皇和贵族有姓,但庶民百姓是“无姓”的。直到.............
  • 回答
    泊松分布是概率论中一个非常重要的离散概率分布,它描述的是在固定时间间隔或空间区域内,某种事件独立地、以一个固定的平均发生率发生的次数。理解泊松分布的现实意义,需要深入剖析它所描述的核心要素以及它为何在现实世界中如此普遍。泊松分布的现实意义:泊松分布的现实意义在于它能够有效地量化和预测那些看起来随机但.............
  • 回答
    你提出了一个非常棒的问题,触及了引力学中一个核心且常常令人费解的观念。答案并非如你所想的那样“地球各部分对物体引力的合力为零”,而是要更精确地理解“对称性”在其中的作用。首先,我们要澄清一个误解:当物体非常接近地球中心时,地球各部分对它的引力合力并不是零。 事实上,引力的合力是存在的,而且它恰恰是指.............
  • 回答
    要理解游隼和苍鸮为何能在全球广泛分布,且未演化出明显物种分化,我们需要从它们各自的生态位、适应能力、以及影响物种形成的几个关键因素入手。这不是一件简单的事情,涉及到演化生物学的许多层面,但我们可以一层层剥开来看。首先,我们得承认一个事实:游隼和苍鸮确实是分布极其广泛的猛禽,但说它们“没有分化成不同物.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    林姓,这个在中华姓氏中响当当的名字,确实与福建有着不解之缘。要说清楚为何福建聚集了如此多的林姓人口,需要从历史、迁徙、地理环境等多方面来掰扯。这不是一朝一夕的现象,而是历经千年、层层叠加的结果。一、 福建——历史上的“南蛮之地”,成为避乱迁徙的理想之地首先,我们要理解福建在古代的地位。在汉唐时期,中.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有