在 SQL 被引入的 45 年中,它经历了许多数据库的诞生和消亡,也经历了许多数据处理方式的诞生和消亡。

作者 | Jennifer Ouellette

译者 | 弯月

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

四十五年前,两位年轻的IBM研究人员在数据库上提出了一种新的语言,这是一种关系型语言,它奉行一切数据可以被声明性地操作和容易操作的思想。自Don Chamberlin和Ramond Boyce出版《SEQUEL:结构化英语查询语言》一书后的几年里,关系模型和SQL已经扩展并被大量的技术所采纳,如OLTP、OLAP、对象数据库、对象关系数据库,甚至NoSQL等等。SQL同时也启发了非关系数据库的查询语言设计:如SQL for Object-Database(用于对象数据库的SQL),SQL for Object-Relational(用于对象关系型数据库的SQL),SQL for XML、SQL for Spatial、SQL for Search、SQL for JSON、SQL for Timeseries、SQL for Streams等等。每个BI工具都使用各种各样的SQL与数据交互。实际上,SQL是最成功的第四代语言。

“SQL是一种只有它自己的力量才能超越它的神秘手段。”——Lukas Eder

正如Don最近所说的,SQL是基于关系代数的基础,目的是通过提供一个类似于英语的查询语言来更简单地实现以下目标:

  • 声明性的语言和流程(而不是程序性的)

  • 使语言可组合以帮助轻松编写复杂的查询

  • 和Edger F Codd开发的关系模型共同工作

虽然大数据试图为数据仓库扩展和替换关系型系统,但它们试图使用相同的SQL语言。Hive, Impala、Drill、BigSQL使用的语言都深受SQL启发,优化器和执行类似于SQL的MPP执行。他们还定期添加新的SQL功能。所有这些都发生在你能想到的每种类型的数据存储和模型上。SQL中数据存储格式、数据模型和查询处理的分离带来了显著的好处。在SQL被引入的45年中,它经历了许多数据库的诞生和消亡,也经历了许多数据处理方式的诞生和消亡。支持NoSQL运动的一些人暗示SQL和SQL数据库不能将会消亡,即使是无意的。但SQL阵营已经迈步前进,Don Chamberlin最近说道:“当一种语言得到了普遍认可,以至于其他语言开始将自己定义为不是那种语言时,它必须做得非常好。”

另一方面,数据库只是转向了No-SQL。虽然目前对No-SQL的定义是“Not Only SQL”,但最初的想法是不使用SQL,而代之以其他语言和框架,如map-reduce。然而十年后,每个流行的NoSQL数据库都有了一个SQL变体:如Couchbase的N1QL,Cassandra的CQL,Elastic的ElasticSearch。你会说,“MongoDB没有SQL”。我会说,“眯眼想一想!你会看到一个非常简单的SQL实现。” 通过在MongoDB中使用一个简单的,有些程序化的,特别的设计,一些松散组合性的查询,优化以及许多创新都可以使用SQL完成。

虽然关系模型非常成功,但是数据库支持各种数据模型:如JSON, Graph, XML, Timeseries, Spatial, Wide-column, Columnar, Document等等。大多数(如果不是全部)数据库都有自己的SQL版本。如N1Q1(SQL for Jason)、SQL/XML、SQL from InfluxDB、SQL/Spatial、CQL in Cassandra等等,甚至NoSQL数据库也实现了SQL和SQL启发的查询语言。即使在新的酷炫的“数据科学”世界中,SQL技能也是强烈推荐的。Lukas Eder在他的“must-see”谈话中阐述了这一点。有关他的谈话,请参见相关链接。

现在,NoSQL数据库相关的SQL项目要比SQL数据库的项目多。

SQL 为何会成功?

  1. 声明性:你只需要声明输出,查询引擎就会找出执行查询的最佳方式。优化器,特别是1979年Pat Selinger等人发明的基于成本的优化器,帮助持续地改进性能。这为每个新进入者提供了一个很高的标准。最近一篇关于Apache Hive的论文就是一个复杂性和完善涉及的例子为什么SQL如此成功?

  2. SQL不仅用于“查询”,还用于更新数据、执行事务。存储过程,UDF通过将过程语言与声明性SQL相结合来扩展访问范围。

  3. SQL具有可塑性。它已经多次标准化,每次都会添加一本功能齐全的书,一个充满语法的商店,以及一个充满关键词的词典。当然,并非所有的SQL都是相同的。即使是RDBMS上的传统SQL实现也不完全兼容,除非您小心地编写SQL使其兼容。通过所有这些,SQL的原始精神得以保留。SQL的一个进化的例子是SQL++。Don Chamberlin和Mike Carey教授讨论了支持复杂数据模型的需求,使用户和开发人员可以轻松访问JSON中的数据。Don写的书《SQL++ for SQL users:A Tutorial》介绍了SQL++的最新发展,SQL++这种语言是为灵活的JSON数据模型上的数据处理而设计的,它保持了与SQL的兼容。

  4. 就像它所借用的英语一样,SQL对新数据类型、访问方法和用例的新思想和扩展持开放态度。

  5. SQL与数据表示的独立性使其可以用于非关系数据:CSV, JSON和所有大数据格式。有些人把关系模型表示的刚性和SQL的刚性混为一谈。实际上,对于任何给定的Schema,SQL允许你对任何数据格式执行select-join-group-aggregate-project操作

评估SQL支持

既然SQL无处不在,那么你就需要在支持级别上进行尽职调查。

  1. 找出每个工作负载的特征和目标。例如,交互式应用程序,或交互式分析,或批量分析,或BI工作负载等等。

  2. 支持的声明反映了操作能力。

  3. 在表达式(标量、聚合、布尔值)、联接(内联、左联/右联/全联)、子查询、派生表、排序和分页(LIMIT / OFFSET)方面的语言能力。

  4. 索引:没有正确索引的SQL只是一个图灵机器原型。

  5. 优化器:查询重写,选择正确的访问路径,创建最佳执行路径是使得SQL语言成为成功的第4代语言的原因。有些具有基于规则的优化器,有些具有基于成本的优化器,而有些则两者都有。评估优化器的质量至关重要。典型的基准(TPC-C、TPC-DS、YCSB、YCSB-JSON)在这里对你没有帮助。

  6. 正如我们常说:“数据库有三个重要方面:性能、性能和性能”。测量工作负载的性能很重要。YCSB和扩展的YCSB-JSON将使评估更容易。

  7. SDK:丰富的SDK和语言支持,加快你的开发速度。

  8. BI工具支持:对于大型数据分析,通过标准数据库连接驱动程序来支持BI工具通常非常重要。

N1QL的创建者Gerald Sangudi曾经说过,SQL是成功的,因为它代表了数据处理的基本操作。SQL支持一组丰富的操作:select-join-nest-unnest-group-aggregate-having-window-order-paginate-set-ops。这是我们(或机器)在指定数据操作时的想法吗?虽然还有待观察,但像Python和Java这样的语言正在为数据的这些操作添加运算符。也许,其他人也会效仿。SQL已经进入了关系型数据库模型不曾涉足的领域。可以毫不夸张地说:

SQL已死,但SQL将永存!

【END】

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞手机导航已死!

☞996 的程序员,只能云养娃吗?

☞Python 让蔡徐坤在我的命令行里打篮球!| 技术头条

☞零编程基础、大龄全职妈妈是如何写出两个商业网站的?

☞下过富士康工厂、做过华为外包,这位程序员是如何花 6 年逆袭成为技术大佬的?

☞《权力的游戏》最终季上线!谁是你最喜爱的演员?这里有一份Python教程 | 附源码

☞微服务落地,我们在考虑什么?| 技术头条

☞爆料! 18张图、55个链接, 证据都在这了, 你还说自己是中本聪?

☞程序员被骗"黑砖窑":监禁、恐吓、996无休编程!

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

SQL 已死,但 SQL 将永存!相关推荐

  1. SQL 已死,NoSQL 才是王道?|原力计划

    作者 | dbLenis 责编 | 郭芮 出品 | CSDN 博客 当今数据库供应商风头正茂的,要数这三家公司:Amazon.Google.Microsoft.没错,他们都是云计算提供者.火热的三款看 ...

  2. 试图将驱动程序添加到存储区_SQL 已死,但 SQL 将永存!

    (给数据分析与开发加星标,提升数据技能) 编译:CSDN-弯月,作者:Jennifer Ouellette 在 SQL 被引入的 45 年中,它经历了许多数据库的诞生和消亡,也经历了许多数据处理方式的 ...

  3. 不得不为LINQ说几句话,驳“LINQ已死”论

    起因 近日不断看到有关"LINQ已死","LINQ玩完了吧"的言论,甚至于更有牛人说出"程序开发最终会回到本机代码上",暂不说这些言论是否正 ...

  4. java中sql去除游标_java.sql.SQLException:-ORA-01000:已超过最大打开游标

    小编典典 ORA-01000(最大打开游标错误)是Oracle数据库开发中极为常见的错误.在Java上下文中,当应用程序尝试打开比数据库实例上配置的游标更多的ResultSet时,就会发生这种情况. ...

  5. sql服务器状态已停止,SQL SERVER 2008 SSMS - SQL Server Management Studio 已停止工作

    Overall summary: Final result:                  已通过 Exit code (Decimal):           0 Exit message:   ...

  6. 已解决 java.sql.SQLException: 列名无效

    已解决 java.sql.SQLException: 列名无效 说明在获取ResultSe结果集的时候字段与查询到的表中字段没有一至的, 解决方案: 更改rs.getObject(" 字段名 ...

  7. 批着DDD,实则是以数据库为中心------数据库已死

    现代软件和以往传统软件主要区别在于:现代软件基于internet互联网技术,运行于开放的网络环境,不象传统软件只是运行在封闭的局域网,运行环境的区别就决定了软件操作用户的多少,在一个开放互联网环境, ...

  8. Java 已死?听听这些重量级大咖是怎么说的

    Java 已死?听听这些重量级大咖是怎么说的 在 Java 的世界发生了什么事?事实上,很多.Java 9 在 9 月将会来临,Jigsaw 终于获批,而 Java 大咖正在给我们提供关于这一编程语言 ...

  9. 数仓已死?数据湖当立!

    前言 前两天,我详细剖析了一下这两天脉脉上很火的数据建模帖子.指出来帖子里百度小哥"只见宽表不见建模"的核心原因是整个数据圈的核心逻辑变了. 然后就引起了建模群里一帮人在疯狂吐槽. ...

最新文章

  1. php cli模式下获取参数的方法
  2. 推动网络由连接为中心向用户为中心转变
  3. php本地环境搭建软件下载,用EasyPHP本地搭建PHP环境的步骤分享
  4. javascript设计模式-抽象工厂模式
  5. 大数据分析,利用向外扩展技术深入挖掘商业价值
  6. java工程师写html_java工程师_基础_阶段一_HTML笔记篇
  7. Pascal VOC 2007和2012数据集下载地址(不需国外,速度依旧让你感动)
  8. springboot简历制作
  9. html5 颜色对应8进制,十进制字体颜色html代码参照表 rgb值颜色查询对照表
  10. 51单片机外围模块——红外通信
  11. Xilinx FPGA 下载器驱动提示“系统找不到指定的路径”的解决办法
  12. 谈下论坛和商城的开发项目
  13. 搞笑git 程序员改bug_这些神奇又搞笑的bug,真的让程序员万万没想到!
  14. linux运维的名言,Linux之父十大名言 你曾听说过几句?
  15. 一次性禁止禁止Flash Helper service(即ff新推荐)即flash弹出来的广告
  16. 分享2020年线上支付接口产品讲解
  17. Observability: 如何为 APM 定制 transactions 及 spans
  18. 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
  19. java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw
  20. 计算机文秘所学的专业知识,18文秘02李荧 随着现代科学技术的发展,计算机已经...

热门文章

  1. 如何备份服务器日志到其他服务器_sql2008自动备份到ftp服务器,sql2008自动备份到ftp服务器代码公布...
  2. 十二月十六日鸿蒙,华为12月16日举行鸿蒙 2.0 手机开发者Beta活动,分享鸿蒙OS2.0设计理念...
  3. 剑指offer之使数组的奇数在偶数前面
  4. RC4算法及其实践(Hello Password)
  5. Python办公自动化 - 2 Word办公自动化
  6. Python菜鸟入门:day11文件操作
  7. 15行代码抓取兰亭序全文单字高清字帖
  8. 保持代码工整的 7 个小技巧
  9. Python 之父 Guido van Rossum 退休失败,正式加入微软搞开源!
  10. IT 趣味故事:TCP 出“大事”了!