50年了!为什么我们仍在使用SQL?
|
admin
2024年5月7日 17:25
本文热度 780
|
SQL 和关系数据库管理系统(RDBMS)都是在上世纪70 年代早期开发的。Edgar F. Codd 开发了 RDBMS,而 Donald D. Chamberling 和 Raymond F. Boyce 开发了 SQL。二者都诞生在计算机技术的早期,而且在 90% 的时间里都非常有效,使得数据库成为了一项 “已经被解决的问题”。就像 MailChimp 已经成为了发送新闻简讯的同义词。如果你想使用数据库,你就得使用 RDBMS 和 SQL。不过,仍然还是有人使用其他 email 软件,正如还是用人使用非 SQL 的数据库。但即使是存在着其他可供使用的数据库技术,SQL 依旧占据霸主地位。以下 8 条,就是我们在 SQL 诞生 50 年后依旧使用它的原因。
SQL 最初基于关系代数和元组关系演算——由 Codd 特别为关系数据库开发的两种数学模式。所以,SQL 是特别为处理数据而设计的,而事实证明,它非常善于存取和组织数据。那么第一个原因就是:作为一种数据库技术,SQL 非常称职。
RDBMS 已经问世很长时间了,所以已经用于了大量不同的情况。在 “前网络时代”,它就作为线下数据库使用,到如今,有了重大修改的 SQL 数据库,仍在 Facebook 这样的全球性 app 中扮演中核心角色——RDBMS 和 SQL 已经久经沙场。而在众多产品中运行过的无数个小时,证明了它们是可信赖的。有些软件就是能解决问题,尤其是当你在处理充斥着丢失、损坏和失败等问题的数据库时,这种优势尤为明显。作为成熟的软件,SQL 有着备份计划、变化管理和操作严谨性,而这些会使棘手的情况大为好转。
当事物存在一段时间之后,围绕着它的知识体系就会被建立。SQL 也不例外。最过去的时间里,大量的 SQL 知识被写成文档,SQL 社区快速发展,许许多多的技术人才成长了起来。因为 SQL 社区如此活跃,SQL 文档又如此丰富,所以它便吸引了大量的人才和商业活动。而又因为 SQL 吸引了大量的人才,所以 SQL 社区更加壮大,知识更加深入。
计算机语言发展了这么久,直到今天,SQL 仍然是一种非常易学的语言。短短几天,你就可以学会基本的功能,能够进行查询和返回数据。非常简单。即使是传统意义上的非技术岗位,比如市场,公司高管,以及非技术性的产品经理,都会去学习基本的 SQL 功能,来支持他们的工作。而深入地了解 SQL 基于的关系型数据库系统,完全是另一件事。对于大多数只需要使用查询功能的人来说,SQL 真是太好用了。
因为有半数的开发者都会使用 SQL 和 RDBMS,所以我们可以肯定地说,这两者高度普及。这绝不是一件坏事。正如上文所说,由于使用人数多,相关知识和社区得以快速发展。而又由于其简单,故而对于开发者以及其他相关人员来说,SQL 知识几乎是常识。于是,相关知识就极易在公司、产业之间传播,人才储备充足。而这又反过来促进了知识的创造和社区的成长。可见,SQL 数据库普及度极高的特性,已经为其自身的成长构筑了一个良性循环。
从 1995 年至今,开源的 SQL 技术(MySQL 和 PostgreSQL)已经成为了主要的 SQL 数据库技术。2023年,Stack Overflow面向90000名开发人员进行的一项调查显示,PostgreSQL在数据库引擎的选择上领先于MySQL,这与往年的调查相比有了显著变化。这种向开源 SQL 数据库切换的趋势,对于已经规模庞大的 SQL 社区来说是一件好事。同时这种趋势的存在也印证了,SQL 社区中的开发者们正在努力地使 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;
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 做得非常好。毕竟,不是数据因计算而存在,而是计算因数据而存在。
八、SQL/RDBMS 和 NoSQL/DBMS 数据库各司其职
数据库是工具。工具不应该只有斧子,还应该有扳手,螺丝刀,锯子等等。每一种工具各司其职,解决不同的问题。而每一种数据库都长于一些事情,而短于另一些事情。
当你无法预见数据汇总或数据用途的所有可能性,但又需要表示一个系统中各部分的关系时,关系数据库就是最好的选择。而且老实说,大部分系统在这方面做得并不好。再者,SQL 语言本身提供了一种用户友好型的数据组织方式。
SQL/RDBMS 只是众多工具中的一种,且刚好在很多情况下都是切实能用的那种。而当需要保证数据的完整性、一致性时(比如金融领域),SQL/RDBMS 就是最好用的工具。
SQL 数据库有它们自身的缺点,且对于某些工作来说,并不是最好的选择。但在大部分情况下,它们可以轻松打败其他非 SQL 数据库。
有些人会担心数据规模的问题,但实际上,只有很小一部分人需要解决 RDBMS 的扩容问题——毕竟你不是 Facebook 或者 Google。因此,你仍然可以用 SQL 数据库管理数一百万计的用户信息,而不出现任何问题。
更何况,只要知道如何权衡利弊,RDBMS 是可以扩容的。
尽管数不清的其他数据库系统和技术,都在不断扩大着使用人群,但是,毫无疑问地,SQL 数据库在可预见的未来甚至更远,会一直发挥作用。随着大数据,深度学习和物联网的到来,即使 SQL 数据库再流行 50 年也不奇怪。
确实,SQL 数据库是有缺点的。但在绝大多数的案例中,庞大的社区,简单的语言,以及有强大的 RDBMS 作为其基础,使得 SQL 成为了最好的选择之一。
为什么我们在 SQL 诞生 50 年后还一直使用它呢?因为它能用,而且在 90% 的情况中都能完成任务。这对于身处越来越复杂的技术与集成环境中的开发者而言,就是最大的优点。
该文章在 2024/5/7 17:25:49 编辑过