SQL 五十周年:何去何从?

原文地址 https://www.infoworld.com/article/2337457/sql-at-50-whats-next-for-the-structured-query-language.html

SQL 即使被生成式 AI 隐藏在幕后,也将继续在数据交互和使用方面发挥关键作用。

CREDIT: PAVEL L PHOTO AND VIDEO / SHUTTERSTOCK

1974 年 5 月,Donald Chamberlin 和 Raymond Boyce 发表了一篇关于 SEQUEL 的论文,这是一种可用于管理和分类数据的结构化查询语言。由于另一家公司拥有 SEQUEL 一词的版权,「结构化查询语言」更名为 SQL。20 世纪 70 年代晚些时候,SQL 被甲骨文等数据库公司与他们的新式关系型数据库产品一起使用。剩下的,就像人们常说的那样,就是历史了。

SQL 至今已有 50 年历史,是围绕数据库设计和采用的。作为一种管理和交互数据的方式,它一直在不断发展。根据 Stack Overflow 的数据,SQL 是专业程序员经常使用的第三大语言。2023 年,国际电气和电子工程师协会(IEEE)指出,SQL 是开发者找工作时最需要掌握的语言,因为它可以与其他编程语言相结合。

纵观当今其他老式语言,COBOL(1959 年推出)、FORTRAN(1958 年首次编译)等也仍在使用。虽关系着高薪职位,它们仍部署在传统项目而非令人兴奋的新项目中。另一方面,SQL 仍被用作人工智能、分析和软件开发工作的一部分,是我们日常与数据交互的标准。

(一)为什么 SQL 仍如此重要?

你可能会问,为什么 SQL 能存活这么久,甚至活得挺好。

它语法非常奇特,与时代格格不入,新手不容易学习。此外,每个数据库供应商都必须支持 SQL,但都有具体差别,因此一个数据库中的操作可能无法轻松转换到另一个数据库,增加了工作和支持需求。

更糟的是,在 SQL 中很容易犯错误,而这些错误可能会带来真正的灾难性后果。例如,如果在指令中缺少 WHERE 子句,可能导致删除整个表而不是执行所需的操作,从而需要大量恢复丢失的数据。这就要求写代码时检查语法逻辑、预先推演代码的实际运行结果,保证准确无误。

那么,为什么在 SQL 首次设计和发布 50 年后的今天,它仍然是处理数据的主要方法呢?

SQL 以强大的数学理论为基础,因此还能有效执行和支持其设计初衷。事实上,当你将 SQL 与关系型数据库相结合时,你就可以将创建的数据以及管理数据的方式映射到许多业务实践中,且这种方式是可靠、有效、可扩展的。简言之,SQL 行之有效、无以替代。

例如,SQL 是第一种可在单次请求中返回多行的编程语言。这样能更容易地获取一组数据(进而项目及其应用)中正在发生的变更,并将其转化供项目使用。SQL 也能将信息分割到不同的表中,用于特定的任务。比如将客户数据放到一个表中,将生产数据放到另一个表中。执行变更的能力是当今大多数流程的支柱,而 SQL 使大规模变更成为可能。

SQL 取得成功的另一个重要原因是,它始终与时俱进。多年来,SQL 从关系型语言的根基出发,增加了对地理信息系统 (GIS) 数据、JSON 文档以及 XML 和 YAML 的支持。这使 SQL 与开发人员理想的数据交互方式保持同步。现在,SQL 可以与矢量数据相结合,使开发者能够使用 SQL 与数据交互,同时为生成式 AI 应用进行矢量搜索。

(二)SQL 的未来如何?

过去曾有人试图取代 SQL。NoSQL(不仅是 SQL)数据库的开发是为了取代关系型数据库,摆脱大规模处理和管理数据的传统模式。然而,这些数据库并没有取代 SQL,而是添加了自己的类 SQL 语言,复制了 SQL 在开发者工作方式中根深蒂固的一些方法和途径。

过去,自然语言处理的倡导者曾呼吁采用新方法来摒弃 SQL 笨拙的标准化方法。然而,这些尝试最终产生的方法与它们试图取代的方法一样笨拙,最终还是被边缘化、被忽视。生成式 AI 可能会为开发者承担更多编写 SQL 的任务,因为作为训练的一部分,大型语言模型已经接触了大量的 SQL 代码。不过,虽然这种方法可能会逐渐发展并变得更流行,但它仍然依赖于 SQL 来与这些数据集进行实际交互,并将结果反馈给用户。如果说有什么变化的话,这可能会使 SQL 在未来变得更加重要,而不是更加不重要,尽管开发者对它的可见度会降低。

即使 SQL 最终会退居幕后,它也将继续在我们与数据交互和使用数据的过程中发挥关键作用。在我们所有的 IT 系统中,有很大一部分都依赖于数据来运行,因此 SQL 不会在短期内消失。因此,让我们庆祝 SQL 50 周年,并考虑未来如何继续开发和使用它。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

相关推荐
tatasix12 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。25 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了26 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度28 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮30 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
传而习乎1 小时前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary1 小时前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发