SQL 诞生 48年了!为什么我们仍在使用它?

Aidan075 等级 338 0 0

SQL 诞生 48年了!为什么我们仍在使用它?

为什么我们仍在使用 SQL?

SQL 和关系数据库管理系统(RDBMS)都是在 上世纪70 年代早期开发的。Edgar F. Codd 开发了 RDBMS,而 Donald D. Chamberling 和 Raymond F. Boyce 开发了 SQL。

二者都诞生在计算机技术的早期,而且在 90% 的时间里都非常有效,使得数据库成为了一项 “已经被解决的问题”。就像 MailChimp 已经成为了发送新闻简讯的同义词。如果你想使用数据库,你就得使用 RDBMS 和 SQL。

不过,仍然还是有人使用其他 email 软件,正如还是用人使用非 SQL 的数据库。但即使是存在着其他可供使用的数据库技术,SQL 依旧占据霸主地位。

以下 8 条,就是我们在 SQL 诞生 48 年后依旧使用它的原因。

1. 数据处理能力

SQL 最初基于关系代数和元组关系演算——由 Codd 特别为关系数据库开发的两种数学模式。

SQL 诞生 48年了!为什么我们仍在使用它?

所以,SQL 是特别为处理数据而设计的,而事实证明,它非常善于存取和组织数据。

那么第一个原因就是:作为一种数据库技术,SQL 非常称职。

2. 实践检验

RDBMS 已经问世很长时间了,所以已经用于了大量不同的情况。在 “前网络时代”,它就作为线下数据库使用,到如今,有了重大修改的 SQL 数据库,仍在 Facebook 这样的全球性 app 中扮演中核心角色——RDBMS 和 SQL 已经久经沙场。而在众多产品中运行过的无数个小时,证明了它们是可信赖的。

有些软件就是能解决问题,尤其是当你在处理充斥着丢失、损坏和失败等问题的数据库时,这种优势尤为明显。作为成熟的软件,SQL 有着备份计划、变化管理和操作严谨性,而这些会使棘手的情况大为好转。因此,SQL 数据库几乎总是最好的选择。

3. 知识和社区

当事物存在一段时间之后,围绕着它的知识体系就会被建立。SQL 也不例外。最过去的时间里,大量的 SQL 知识被写成文档,SQL 社区快速发展,许许多多的技术人才成长了起来。

因为 SQL 社区如此活跃,SQL 文档又如此丰富,所以它便吸引了大量的人才和商业活动。而又因为 SQL 吸引了大量的人才,所以 SQL 社区更加壮大,知识更加深入。这就是多年来 SQL 的发展状况。

4. 简单

计算机语言发展了这么久,直到今天,SQL 仍然是一种非常易学的语言。短短几天,你就可以学会基本的功能,能够进行查询和返回数据。非常简单。

即使是传统意义上的非技术岗位,比如市场,公司高管,以及非技术性的产品经理,都会去学习基本的 SQL 功能,来支持他们的工作。

而深入地了解 SQL 基于的关系型数据库系统,完全是另一件事。对于大多数只需要使用查询功能的人来说,SQL 真是太好用了。

5. 高度普及

因为有半数的开发者都会使用 SQL 和 RDBMS,所以我们可以肯定地说,这两者高度普及。这绝不是一件坏事。正如上文所说,由于使用人数多,相关知识和社区得以快速发展。而又由于其简单,故而对于开发者以及其他相关人员来说,SQL 知识几乎是常识。

于是,相关知识就极易在公司、产业之间传播,人才储备充足。而这又反过来促进了知识的创造和社区的成长。

可见,SQL 数据库普及度极高的特性,已经为其自身的成长构筑了一个良性循环。

6. 开源及互操作性

从 1995 年至今,开源的 SQL 技术(MySQL 和 PostgreSQL)已经成为了主要的 SQL 数据库技术。

SQL 诞生 48年了!为什么我们仍在使用它?

开发者使用的数据库技术排行, Stack Overflow

其实,PostgreSQL 是开发者最希望使用的数据库技术之一。尽管它领先的幅度很小,且被 MongoDB 大幅超越。

SQL 诞生 48年了!为什么我们仍在使用它?

开发者最希望使用的数据库技术排行, Stack Overflow

这种向开源 SQL 数据库切换的趋势,对于已经规模庞大的 SQL 社区来说是一件好事。同时这种趋势的存在也印证了,SQL 社区中的开发者们正在努力地使 SQL 变得更好。

7. 能用 SQL 谁还写代码?

坊间流传着这样一句话……

能用 SQL server 做好的事情就别写代码。

这句话背后的逻辑是,在绝大多数情况下,SQL 都能找到最有效的办法来完成你的任务,而且做得比任何能自己写代码来解决的人更好。

举个例子。假设我们需要建立一份关于 “加利福尼亚 2020 年第三季税收” 的报告,具体做法是,选出列表中加利福尼亚的用户,并按照数据进行排列。那么你只需要一句 SQL 语句就可以完成:

SELECT SUM(Value_USD) AS California_Revenue_Q3 FROM Transactions WHERE Location = ‘California’ AND DATEPART(q, Date) = 3 AND YEAR(Date) = 2020;

而如果你要按照不同的地区对数据进行分解,那么 SQL 语句是这样的:

SELECT Location, SUM(Value_USD) AS Revenue_Q3 FROM Transactions WHERE DATEPART(q, Date) = 3 AND YEAR(Date) = 2020 GROUP BY Location ORDER BY Location;

如果你想得到税收最高的 5 个区域:

SELECT TOP 5 Location, SUM(Value_USD) AS Revenue_Q3 FROM Transactions WHERE DATEPART(q, Date) = 3 AND YEAR(Date) = 2020 GROUP BY Location ORDER BY SUM(Value_USD) DESC;

如果你想用其他语言来进行这些查询,情况就会复杂很多,既耗时间,语句也长得多。设计 SQL 就是为了切割数据,而且看起来 SQL 做得非常好。毕竟,不是数据因计算而存在,而是计算因数据而存在。

8.SQL/RDBMS 和 NoSQL/DBMS 数据库各司其职

数据库是工具。工具不应该只有斧子,还应该有扳手,螺丝刀,锯子等等。每一种工具各司其职,解决不同的问题。而每一种数据库都长于一些事情,而短于另一些事情。

当你无法预见数据汇总或数据用途的所有可能性,但又需要表示一个系统中各部分的关系时,关系数据库就是最好的选择。而且老实说,大部分系统在这方面做得并不好。再者,SQL 语言本身提供了一种用户友好型的数据组织方式。

SQL/RDBMS 只是众多工具中的一种,且刚好在很多情况下都是切实能用的那种。而当需要保证数据的完整性、一致性时(比如金融领域),SQL/RDBMS 就是最好用的工具。SQL 数据库有它们自身的缺点,且对于某些工作来说,并不是最好的选择。但在大部分情况下,它们可以轻松打败其他非 SQL 数据库。

有些人会担心数据规模的问题,但实际上,只有很小一部分人需要解决 RDBMS 的扩容问题——毕竟你不是 Facebook 或者 Google。因此,你仍然可以用 SQL 数据库管理数一百万计的用户信息,而不出现任何问题。

更何况,只要知道如何权衡利弊,RDBMS 是可以扩容的。

再用 48 年?

尽管数不清的其他数据库系统和技术,都在不断扩大着使用人群,但是,毫无疑问地,SQL 数据库在可预见的未来甚至更远,会一直发挥作用。随着大数据,深度学习和物联网的到来,即使 SQL 数据库再流行 48年也不奇怪。

确实,SQL 数据库是有缺点的。但在绝大多数的案例中,庞大的社区,简单的语言,以及有强大的 RDBMS 作为其基础,使得 SQL 成为了最好的选择之一。

为什么我们在 SQL 诞生 48 年后还一直使用它呢?因为它能用,而且在 90% 的情况中都能完成任务。这对于身处越来越复杂的技术与集成环境中的开发者而言,就是最大的优点。

来自:码农网

www.codeceo.com/article/why-we-use-43-years-old-sql.html

SQL 诞生 48年了!为什么我们仍在使用它?

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/5orsJfIfwICmxZ1fGIXuAw,可扫描二维码进行关注: SQL 诞生 48年了!为什么我们仍在使用它? 如有侵权,请联系删除。

收藏
评论区

相关推荐

【译】为什么传统的PostgreSQL又流行起来了
本文译自 《Why oldschool PostgreSQL is so hip again》(https://www.infoworld.com/article/3240064/sql/whyoldschoolpostgresqlissohipagain.html) by Matt Asay(https://www.infoworl
【Golang】Go sqlx操作mysql教程
sqlx是Go数据库操作包,它在database/sql包的基础上增加了更加高效的数据库操作函数,也就是说使用sqlx操作数据库比使用database/sql更加方便。 1.sqlx关键概念介绍 sqlx定义了下面几个关键类型: go sqlx.DB 代表一个数据库 sqlx.Tx 代表一个事务 sqlx.Rows 代表sql查询结果的多行
MySQL 基础知识
前言 在日常开发中,一些不常用且又比较基础的知识,过了一段时间之后,总是容易忘记或者变得有点模棱两可。本篇主要记录一些关于MySQL数据库比较基础的知识,以便日后快速查看。 SQL命令 SQL命令分可以分为四组:DDL、DML、DCL和TCL。四组中包含的命令分别如下 sql(https://imghelloworld.oss
MySQL的语句执行顺序
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。  一、sql执行顺序 
SQL 诞生 48年了!为什么我们仍在使用它?
(https://imghelloworld.osscnbeijing.aliyuncs.com/a784e838a6d497b87a19798716e69fe8.png) 为什么我们仍在使用 SQL? SQL 和关系数据库管理系统(RDBMS)都是在 上世纪70 年代早期开发的。Edgar F. Codd 开发了 RDBMS,而 Do
工作中用到的oracle SQL
Oracle SQL用于记录工作中用到的oracle sql语句 表新增字段 表结构变动: 新增字段并指定字段类型sql 新增一个字段,多个字段用小括号括起来,逗号分隔alter table 表名 add 新增字段名(类型长度); demo TSALES_APPLY_COST表中新增一个字段(CAPITAL) 类型为: NU
网络渗透测试实验三
写在前面 实验终于开始有意思起来了,Attack! 网络渗透测试实验三:XSS 和 SQL 注入 实验目的+ 了解什么是XSS+ 了解XSS攻击实施,理解防御XSS攻击的方法+ 了解SQL注入的基本原理+ 掌握PHP脚本访问MySQL数据库的基本方法+ 掌握程序设计中避免出现SQL注入漏洞的基本方法+ 掌握网站配置。 系统环境+ Kali Linux2、Wi
每日一题(一)
写在前面 刷题在北联大的BUU平台,每日一题,每日更新,嘿嘿 [HCTF 2018]WarmUp刚开始看这个题真的一点思路没有,看源码、抓包一波操作过后还是选择去找了wp。。。wp说原题是有个hint.php,扫目录也可以扫出source.phphint.php里面说真正的flag文件是ffffllllaaaagggg里source.php里面是源码,代码审
sql补习班-Day1
DAY1::: warning 该内容已转换成专栏,地址:https://www.helloworld.net/special/d/nblbgc::: 本文一共291字,读完大概需要3分钟适用人群:sql初学者问题来源:]问题描述:查找最晚入职员工的所有信息问题解决:形如查找某个字段为最大值的问题1.可以通过将限制条件设为 入职时间 入职时间最大值 来处
基于Maven工程下的MyBatis基本使用之SQL传单/多参、多表关联查询
MyBatis基本使用声明:基于《基于Maven工程下的MyBatis框架+MySQL+连接池的数据查询操作》进一步拓展,相关配置文件、数据文件可阅上篇。 SQL传单/多参 在goods.xml新增两个<select: <!单参数传参,使用paramterType指定的数据类型即可,SQL中value提取参数 <select id"sel
手把手教你用Python轻松玩转SQL注入
前言大家好,我是黄伟。相信大家经常有听到过SQL注入啥的,但是并不是特别了解;小编以前就是经常听别人说,但是自己啥都不懂,直到后来看了相关教材后才明白,原来是这么个东西,那么到底是什么东西了,又或者是不是个东西了?我们接着往下看。 一、浅谈SQL注入SQL注入其实就是把SQL命令插入到WEB表单中提交或者输入一些页面请求的查询字符串,比如我们输网址,就是相
一文了解滴滴与蚂蚁金服开源共建的SQLFlow
「数仓宝贝库」,带你学数据!导读: SQFlow利用SQL语言构建机器学习和深度学习,致力于“Make AI as simple as SQL”,愿景是推进人工智能大众化、普及化,也就是只要懂商业逻辑就能用上人工智能,让懂业务的人能自由地使用人工智能。本文带你快速了解开源的工程化的自助式数据科学平台SQLFlow。 SQLFlow利用SQL语言构建机器学习
Cobar源码分析之AST
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。 背景 CobarCobar是阿里开源的数据库中间件,关于它的介绍这里不再赘述,可以参考之前的文章 SQLSQL是一种领域语言(编程语言),常用于关系型数据库,方便管理结构化数据。数据库执行SQL时先对SQL进行词法分析、语法分析、语义分析生成抽象语法树(
SQL入门:什么是SQL,如何开始学习SQL?
前言:在我们的日常生活中,我们使用大量的应用程序、小工具和设备。每秒都会产生大量的数据。SQL提供了处理此类数据的标准方法。通过本文,我将向您解释什么是SQL及其演变的概念。本文将讨论以下主题: 传统文件系统的问题自从计算机时代开始,数据存储就已经成为人们关注的主要问题之一。以前,我们通常将数据存储在基于文件的系统中,这会导致数据管理不当。尽管看起来组织得很
SQL性能优化策略之索引优化方法
「数仓宝贝库」,带你学数据!导读:SQL优化是优化工作中经常会涉及的问题,由于早期的开发人员往往只关注于SQL功能的实现,而忽略了性能。特别是复杂的SQL,上线之后很少修改,一旦出现问题,即使是当初的开发人员自己也很难理清其中的业务逻辑,需要花费大量的时间去理解代码之间的关系,最终可能还是感觉无从下手。因此开发人员前期应做好代码注释,避免编写过于复杂的SQL