
二十年前,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)。

层次结构(例如,IMS):1960年代末和1970年代
网络(例如,CODASYL):1970年代
关系型:1970年代和1980年代初
实体-关系:1970年代
扩展关系型:1980年代
语义:1970年代末和1980年代
面向对象:1980年代末和1990年代初
面向关系型:1980年代末和1990年代初
半结构化(例如,XML):1990年代末和2000年代
具有可扩展类型的关系模型(即,面向对象-关系型)主导了所有竞争者,市场上没有其他成功的系统。
尽管许多在2005年涵盖的非关系型DBMS今天仍然存在,但它们的供应商已经将其降级为遗留维护模式,没有人在其上面构建新的应用程序。这种持久性更多是数据的“粘性”证明,而不是这些系统的持久力量。
大多数偏离SQL或RM的系统并没有主导DBMS格局,通常只服务于小众市场。 许多最初以很大声势拒绝RM的系统(想想NoSQL)现在为RM数据库公开了一个类似SQL的接口。这样的系统现在正走向与RDBMSs的融合。 与此同时,SQL融合了最好的查询语言思想,以扩大其对现代应用程序的支持并保持相关性。
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的一个因素。
向量数据库将经历与文档数据库相同的演变,通过添加功能变得更像关系型。同时,关系型老牌产品已经添加了向量索引,并继续前进到下一个新兴趋势。
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保证。
硬件加速器:没有看到除了主要云供应商之外的专业硬件的用例,尽管初创公司将继续尝试。
区块链数据库:一种寻找应用的低效技术。历史表明,这是系统开发的错误的途径。
永远不要低估良好营销对糟糕产品的价值。数据库市场竞争激烈且利润丰厚。这种竞争促使供应商声称他们的新技术将解决各种问题,并改善开发人员的生活。每个开发人员都曾在数据库上挣扎过,因此他们特别容易接受这样的营销。劣质的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 内部标准,以加速互通性。

NewSQL的后果(aftermath)是诞生了一批新的分布式事务型SQL RDBMS。其中包括TiDB、CockratchDB、PlanetScale和YugabyteDB。
营销对数据库成功至关重要; 易用性会让数据库变得流行; 选择专注专业的数据库厂商; 打造标准件避免重复造轮子; SQL和关系型是永恒的王者。
数据库的故事,仍然趣味横生!





