前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stonebraker:站在前人的肩膀上,而不是站在他们的脚趾上

Stonebraker:站在前人的肩膀上,而不是站在他们的脚趾上

作者头像
数据和云
发布2024-07-12 18:46:16
1030
发布2024-07-12 18:46:16
举报
文章被收录于专栏:数据和云

Michael Stonebraker 和 Andrew Pavlo 在《SIGMOD Record》的 2024年6月号上发表了一篇文章,题为:What Goes Around Comes Around... And Around...

在这篇文章的最后,Stonebraker再次提出:我们提醒开发人员从历史中学习。站在前人的肩膀上,而不是站在他们的脚趾上。

珍视历史,是Stonebraker一贯的主张,以下一段话是他在SIGMOD2002上的表达,与今日主张仍然完全一致。

然而,何为肩膀、何为脚趾?也的确值得思考和反思。

作者在开篇概要中提到了写作动机:

  • 二十年前,Stonebraker与Joseph M. Hellerstein合著了一篇论文(What Goes Around Comes Around),评论了之前40年的数据库建模研究和发展,证明了关系模型(RM)和SQL是数据库管理系统(DBMSs)的主要选择,尽管有很多替代它们的努力,但是,反而是SQL更成功的吸收了这些替代方法中的最佳思想
  • 二十年后,我们重新审视这个问题,并认为自2005年以来这种演变一直在继续。再次有重复的努力要取代SQL或RM。但是关系模型继续是主导的数据模型,并且SQL已经扩展以融入来自其他人的好想法
  • 预计未来会有更多相同的情况,即SQL和关系数据库管理系统(RDBMSs)的持续演变。本文还讨论了DBMS实现,并认为主要的进步一直在RM系统中,主要是由硬件特性的变化驱动的

获得这两篇文章的链接,在公众号后台回复:下载

在这篇文章的最后一句,作者幽默的写到:

我们中的一个人可能在二十年后仍然活着,因此完全可以期望他在2044年写这篇论文的后续版本(One of us will likely still be alive and out on bail in two decades, and thus fully expects to write a follow-up to this paper in 2044)。

要知道 Stonebraker 老爷子出生于 1943年,到2024年已经有81岁高龄。我们期望20年后,Stonebraker 还能与 Andrew 或其他人再来回顾一下数据库的历史。下图是来自2023年波士顿数据库会议上,Stonebraker和与会者的合影(会上为他庆祝了80岁生日,在图中找到Stonebraker并不容易)。

在2005年的论文中,作者检视了自1960年代以来的主要数据模型变化,包括:

  1. 层次结构(例如,IMS):1960年代末和1970年代
  2. 网络(例如,CODASYL):1970年代
  3. 关系型:1970年代和1980年代初
  4. 实体-关系:1970年代
  5. 扩展关系型:1980年代
  6. 语义:1970年代末和1980年代
  7. 面向对象:1980年代末和1990年代初
  8. 面向关系型:1980年代末和1990年代初
  9. 半结构化(例如,XML):1990年代末和2000年代

当时的结论是

  • 具有可扩展类型的关系模型(即,面向对象-关系型)主导了所有竞争者,市场上没有其他成功的系统。
  • 尽管许多在2005年涵盖的非关系型DBMS今天仍然存在,但它们的供应商已经将其降级为遗留维护模式,没有人在其上面构建新的应用程序。这种持久性更多是数据的“粘性”证明,而不是这些系统的持久力量。

自2005年以来,数据库领域发生了很多事情。在这段时间里,DBMS已经从它们在商业数据处理的根源扩展到几乎每种类型的数据。这导致了2010年代初的“大数据”时代,以及当前将机器学习(ML)与DBMS技术整合的趋势

本文分析了过去20年的数据模型和查询语言活动,包括以下领域:(1) MapReduce系统,(2) 键值存储,(3) 文档数据库,(4) 列族/宽列,(5) 文本搜索引擎,(6) 数组数据库,(7) 向量数据库,以及 (8) 图形数据库。

作者认为:

  • 大多数偏离SQL或RM的系统并没有主导DBMS格局,通常只服务于小众市场。
  • 许多最初以很大声势拒绝RM的系统(想想NoSQL)现在为RM数据库公开了一个类似SQL的接口。这样的系统现在正走向与RDBMSs的融合。
  • 与此同时,SQL融合了最好的查询语言思想,以扩大其对现代应用程序的支持并保持相关性。

尽管RM的基本原理没有太多变化,但在RM系统实现中发生了戏剧性的变化。DBMS架构的进步解决了现代应用程序和硬件的问题:(1) 列式系统,(2) 云数据库,(3) 数据湖/Lakehouses,(4) NewSQL系统,(5) 硬件加速器,以及 (6) 区块链数据库。其中一些是对DBMS实现的深刻变化,而其他一些只是基于错误前提的趋势。

以下是文中的部分观点摘要:

  • MR的缺陷如此之大,以至于尽管开发者社区的采用和热情,它也无法得救。Hadoop大约在十年前就死了,HDFS已经失去了它的光彩,企业意识到有更好的分布式存储替代品。与此同时,分布式RDBMSs特别是云中的发展势头强劲。
  • MR系统实现的一些方面与可扩展性,弹性和容错性有关,这些已经被引入到分布式RDBMSs中。MR还带来了共享磁盘架构的复兴,随后产生了开放源代码文件格式和数据湖。
  • 针对KV系统。即使是简单的应用程序,RDBMS也可能是更好的选择,因为如果应用程序的复杂性增加,它们提供了前进的路径。
  • 过去20年的一种新架构趋势是使用嵌入式KV存储作为全功能DBMS的底层存储。在此之前,构建一个新的DBMS需要构建一个定制的存储管理系统。使用现有的KV存储允许开发人员在更短的时间内编写新的DBMS。
  • NoSQL已经成为一个存储记录或文档为JSON的DBMS的代名词,具有较弱或不存在的事务。有几十种这样的系统,其中MongoDB是最受欢迎的。
  • 尽管强烈抗议SQL很糟糕,但到2010年代末,几乎所有NoSQL DBMS都添加了SQL接口。最后一个坚持者是MongoDB,但他们在2021年为他们的Atlas服务添加了SQL。
  • 尽管我们承认最初的SQL优化器很慢且效果不佳,但在过去50年中它们已经有了很大的改进。优化器仍然是构建DBMS中最困难的部分。我们怀疑这种工程负担是NoSQL系统最初选择不支持SQL的一个因素。
  • 向量数据库将经历与文档数据库相同的演变,通过添加功能变得更像关系型。同时,关系型老牌产品已经添加了向量索引,并继续前进到下一个新兴趋势。

从上述部分可以合理地得出结论,Non-SQL、非关系型系统要么是小众市场,要么正在迅速成为SQL/RM系统。具体来说:

  • MapReduce系统:它们在几年前就死了,现在最多是遗留技术。
  • 键值存储:许多已经成熟为RM系统,或者只用于特定问题。这些通常可以被现代高性能RDBMS相等或击败。
  • 文档数据库:这些NoSQL系统正在与RDBMS发生碰撞。这两种系统之间的区别随着时间的推移已经减少,将来应该几乎无法区分。
  • 列簇系统:仍然是小众市场。如果没有Google,本文就不会讨论这个类别。
  • 文本搜索引擎:这些系统用于多存储架构中的文本字段。如果RDBMS有更好的搜索功能,这些就不必
  • NewSQL系统:NewSQL供应商错误地预计过去十年内存DBMS的采用会更大。Flash供应商降低了成本,同时提高了存储密度、带宽和延迟。更高的DRAM成本和持久内存的崩溃意味着SSDs将保持为OLTP DBMSs的主导地位。NewSQL的余波是一批新的分布式、事务性SQL RDBMS的出现。
  • 区块链数据库是一种逐渐衰退的数据库技术潮流。区块链支持者还提出了通过在点对点环境中复制来实现数据弹性的其他无意义主张。没有一个理智的公司会依赖互联网上的随机参与者作为关键任务数据库的备份解决方案。

从数据库系统中的主要技术趋势中获得的关键收获如下:

  • 列式系统:转向列式存储彻底改变了OLAP DBMS架构。
  • 云数据库:云已经颠覆了构建可扩展DBMS的传统智慧。除了嵌入式DBMS之外,任何没有以云服务开始的产品都可能失败。
  • 数据湖 / Lakehouses:基于云的对象存储使用开源格式将成为未来十年OLAP DBMS的原型。
  • NewSQL系统:它们利用了新的思想,但还没有像列式和云DBMS那样产生同样的影响。它导致了新的分布式DBMS,支持更强的ACID语义,以对抗NoSQL的较弱BASE保证。
  • 硬件加速器:没有看到除了主要云供应商之外的专业硬件的用例,尽管初创公司将继续尝试。
  • 区块链数据库:一种寻找应用的低效技术。历史表明,这是系统开发的错误的途径。

对过去二十年数据库的分析有几个收获。不幸的是,其中一些是2005年论文中的警告的重复。

  • 永远不要低估良好营销对糟糕产品的价值。数据库市场竞争激烈且利润丰厚。这种竞争促使供应商声称他们的新技术将解决各种问题,并改善开发人员的生活。每个开发人员都曾在数据库上挣扎过,因此他们特别容易接受这样的营销。劣质的DBMS产品通过强大的营销成功,尽管当时有更好的选择可用:Oracle在1980年代这样做了,MySQL在2000年代这样做了,MongoDB在2010年代这样做了。这些系统在早期获得了足够的关注,为他们赢得了时间来弥补早期积累的工程债务。
  • 当心大型非DBMS供应商的DBMS。过去十年数据库的一个有趣方面是,科技公司在内部构建DBMS,然后将它们作为开源项目分拆出来。所有这些系统最初都是作为科技公司的定制应用程序开始的。通过开源项目希望从外部用户那里获得“免费”的开发。当公司首次开源这些系统时,应该谨慎对待,因为它们几乎总是不成熟的技术。
  • 不要忽视开箱即用体验许多非关系型DBMS的一个显著卖点是比RDBMS更好的“开箱即用”体验。每个DBMS都应该使用户能够轻松地对本地和云存储文件进行原地处理。DuckDB的日益普及部分归因于它在这方面做得好。供应商还应该考虑客户将不可避免地面临数据库的额外挑战,包括物理设计、旋钮调整、架构设计和查询调整。迫切需要“自动驾驶”DBMS。
  • 开发人员需要直接查询他们的数据库。对象关系映射(ORM)是快速原型制作的重要工具。但它们经常为了与多个DBMSs的互操作性而牺牲将逻辑推入DBMS的能力。开发人员回落到编写显式的数据库查询以覆盖自动生成的查询不佳。这就是为什么使用支持SQL的RDBMS是更好的选择。
  • AI/ML对DBMS的影响将是显著的。DBMS如何与现代AI/ML工具交互已经成为一个关键问题,特别是随着LLMs的出现。由于LLMs在将NL转换为查询代码方面的进展,使用自然语言(NLs)查询数据库正在复苏。尽管LLMs在这项任务上取得了令人印象深刻的进展,但对那些认为NL将取代SQL的人持谨慎态度。使用AI/ML来优化DBMS的例子包括面向机器学习的查询优化器等。尽管这些基于ML的辅助优化是提高DBMS性能的强大工具,但它并没有消除对高质量系统工程的需求

最终结论

  • 数据库中的循环将继续在接下来的几十年中出现。另一波开发人员将声称SQL和RM对新兴的应用领域不够充分。然后,人们将提出新的查询语言和数据模型来克服这些问题。探索新的思想和概念对DBMS是有价值的(这是我们为SQL获得新功能的地方)。数据库研究社区和市场因为它而更加强大。然而,我们不期望这些新的数据模型将取代RM。
  • 另一个令人担忧的问题是,新项目在重新实施相同的组件时浪费了大量精力,这些组件并不新颖,但却是生产就绪的 DBMS 所必需的。为了加速下一代 DBMS 的发展,社区应该促进可重复使用的开源组件和服务的开发。为实现这一目标,我们已经做出了一些努力,包括文件格式、查询优化和执行引擎。我们认为,数据库界应努力制定类似 POSIX 的 DBMS 内部标准,以加速互通性

【回顾与思考】

What Goes Around Comes Around... And Around...,可以翻译成“循环往复,万变不离其宗”,这篇文章的合著者之一是:Andy Pavlo 。

Pavlo 是 Stonebraker的学生,其博士论文On Scalable Transaction Execution in Partitioned Main Memory Database Management Systems获得了2014 年 SIGMOD Jim Gray 博士论文奖。2013 年,Pavlo 成为卡内基梅隆大学(CMU)计算机科学助理教授,2019 年晋升为副教授。Pavlo推崇自治数据库,是该领域的开创者之一。2020 年 3 月,Pavlo 和他的两位博士生创办了专注于自动优化云数据库的 OtterTune 公司。OtterTune 于 2021 年 5 月推出,并在 2022 年的 A 轮融资中筹集了 1200 万美元。但是在2024 年 6月,OtterTune 宣布倒闭。

除了 Pavlo 的观点,这篇文章以及2005年的文章,代表了Stonebraker对于数据库领域40多年的观察,尽管他发明的QUEL输给了SQL、Ingres输给了Oracle,但是毫不妨碍他毫无保留的拥护SQL。

当然,他仍然表达了对于Oracle的怨念,“永远不要低估良好营销对糟糕产品的价值”,这句话一部分是说给Oracle的。好的产品可能输给好的营销,Oracle在1970年代崛起,并赢得了一场又一场的战争,最后胜者为王!

关于KV带来的底层存储引擎和对于标准件的定义,都体现了站在巨人肩膀上之意。只有借鉴传承才能避免重复造轮子,更好的向前发展演进。所以其实openGauss社区就是在做类似的事情,基于PostgreSQL的底层基础、联合云和恩墨等DBV的联合开发开源、商业发行版(如云和恩墨的MogDB)的专业客户服务等,都为中国式开源探索出了可借鉴的成果。

在Stonebraker文章中唯一提及的中国数据库产品是TiDB,来自以下一段描述:

NewSQL的后果(aftermath)是诞生了一批新的分布式事务型SQL RDBMS。其中包括TiDB、CockratchDB、PlanetScale和YugabyteDB。

最后,我想说的是,Stonebraker文章中的所有建议和分析对于今天的中国市场同样适用,以下一些条目是我重点关注的:

  • 营销对数据库成功至关重要;
  • 易用性会让数据库变得流行;
  • 选择专注专业的数据库厂商;
  • 打造标准件避免重复造轮子;
  • SQL和关系型是永恒的王者。

数据库的故事,仍然趣味横生!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档