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

Aidan075
• 阅读 1456

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年了!为什么我们仍在使用它? 如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
sql注入
反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这