SQL 五十周年:何去何从?

2024-09-02 19:52

本文主要是介绍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

这篇关于SQL 五十周年:何去何从?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130915

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum