SQL 诞生 43 年后依旧使用它的原因

发布时间:2017-05-05

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

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

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

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

  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 数据库技术。

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

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

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

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

  7.  能用 SQL 谁还写代码?

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

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

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

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

  SQL/RDBMS 只是众多工具中的一种,且刚好在很多情况下都是切实能用的那种。而当需要保证数据的完整性、一致性时(比如金融领域),SQL/RDBMS 就是最好用的工具。

  SQL 数据库有它们自身的缺点,且对于某些工作来说,并不是最好的选择。但在大部分情况下,它们可以轻松打败其他非 SQL 数据库。

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

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