
为什么我们仍在使用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是特别为处理资料而设计的,而事实证明,它非常善于访问和组织资料。
那么第一个原因就是:作为一种数据库技术,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数据库技术。

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

这种向开源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是可以扩容的。
SQL可以再用48年吗?
尽管数不清的其他数据库系统和技术,都在不断扩大着使用人群,但是,毫无疑问地,SQL数据库在可预见的未来甚至更远,会一直发挥作用。随着大资料,深度学习和物联网的到来,即使SQL数据库再流行48年也不奇怪。
确实,SQL数据库是有缺点的,但在绝大多数的案例中,庞大的社群,简单的语言,以及有强大的RDBMS作为其基础,使得SQL成为了最好的选择之一。
为什么我们在SQL诞生48年后还一直使用它呢?因为它能用,而且在90%的情况中都能完成任务,这对于身处越来越复杂的技术与集成环境中的开发者而言,就是最大的优点。