作者:蒋步星

来源:数据蒋堂

本文共1602字建议阅读5分钟。
通过本文为大家解读为什么现在SQL变成了当前大数据计算语法的一个发展倾向。

回归SQL是当前大数据计算语法的一个发展倾向。在Hadoop体系中,现在已经很少有人会自己从头来写MapReduce代码了,PIG Latin也处于被淘汰的边缘,而HIve却始终坚挺;即使是Spark上,也在更多地使用Spark SQL,而Scala反而少很多。其它一些新的大数据计算体系一般也将SQL作为首选的计算语法,经过几年时间的混战之后,现在SQL又逐步拿回了主动权。

这个现象,大概有这么两个原因:

1. 实在没什么别的好用

关系数据库过于普及,程序员对SQL相当熟悉,甚至思维习惯都是SQL式的。SQL用来做一些常规查询也比较简单,虽然用于处理复杂的过程计算或有序运算并不方便,但其它那些替代技术也好不到哪里去,碰到SQL难写的运算一样要写和UDF相当的复杂代码,反正都是麻烦,还不如继续用SQL。

2. 大数据厂商的鼎力支持

大数据的技术本质是高性能,而SQL是性能比拼的关键阵地。比性能要面对同样的运算才有意义,过于专门和复杂的运算涉及的影响因素太多,不容易评估出大数据平台本身的能力。而SQL有国际标准的TPC系列,所有用户都看得懂,这样就有明确的可比性,厂商也会把性能优化的重点放在SQL上。

那么,回归SQL好吗?特别地,我们说,大数据的技术本质是高性能,回归并优化SQL对提高计算性能有多大帮助?

那要看是什么运算!

对于比较简单的查询,特别是多维分析式的查询,用SQL确实是不错的。这种运算被传统数据库厂商研究了几十年,实践出很多行之有效的优化手段。而Hadoop这种新型大数据平台,正好可以实习和实施这些经验,在性能上就更容易超越其它语法体系。

但是,对于更常见的过程性计算,SQL并不好用,不仅是开发困难,代码要写很长,而且对于提高性能也很难有什么帮助。

什么是过程性计算呢?就是一步写不出来,需要多次分步运算,特别是与数据次序相关的运算。

我们举几个例子来看:

  • 股票连续3天上涨后再涨1天的概率和平均涨幅,按所属板块和时间段分类对比

  • 与去年同期的收入销售额对比分析,要考虑到节假日的影响

  • 一周内累计登录时长超过一小时的用户占比,但要除去登录时长小于1分钟的误操作情况

  • 信用卡在最近三个月内最长连续消费的天数分布情况,考虑实施连续消费10天后积分三倍的促销活动

    ……

(为了便于理解,这些例子已经做了简化,实际情况的运算还要复杂很多)

对于过程性运算,用SQL写出来的难度就很大,经常还必须要写UDF才能完成。如果SQL写都写不出来,那么指望优化SQL来提高性能也就无从谈起了。有时候能用SQL勉强写出来,代码也会相当复杂,而复杂SQL的优化效果是很差的,在嵌套几层之后,数据库引擎也会晕掉,不知道如何优化。

举一个以前举过的简单例子,在1亿条记录中取最大的前10名,SQL本身没有集合数据类型,理论上会用比较笨的办法,先排序再找前10名。但好一点的数据库引擎都能优化这件事,碰到这样的SQL语句不会真地去做大排序。但是,如果这个运算写到了分组或者子查询里面(写法会不一样了),数据库引擎就未必能识别出来再做优化了。

提高这些复杂运算的性能,指望计算平台的自动优化是靠不住的,根本手段还要靠编写出高性能的算法。象过程运算中还常常需要保存中间结果以复用,SQL需要用临时表,多了IO操作就会影响性能,这都不是引擎优化能解决的事情,必须要去改写计算过程。

事实上,提高性能的本质实际上还是降低开发难度。软件无法提高硬件的性能,只能想办法设计复杂度更低的算法,而如果能够快速低成本地实现这些算法,那就可以达到提高性能的目标。如果语法体系难以甚至没办法描述高性能算法,必须迫使程序员采用复杂度较高的算法,那也就很难再提高性能了。显然,优化SQL运算几乎无助于降低它的开发难度,SQL语法体系就是那样,无论怎样优化它的性能,开发难度并不会改变,很多高性能算法仍然实现不了,也就难以实质性地提高运算性能。

编写UDF在许多场景时确实能提高性能,但一方面开发难度很大,另一方面这是程序员硬写的,也不能利用到SQL引擎的优化能力。而且经常并不能将完整运算都写成UDF,只能使用计算平台提供的接口,仍然要在SQL框架使用它的数据类型,这样还是会限制高性能算法的实现。

专栏作者简介

润乾软件创始人、首席科学家

清华大学计算机硕士,著有《非线性报表模型原理》等,1989年,中国首个国际奥林匹克数学竞赛团体冠军成员,个人金牌;2000年,创立润乾公司;2004年,首次在润乾报表中提出非线性报表模型,完美解决了中国式复杂报表制表难题,目前该模型已经成为报表行业的标准;2014年,经过7年开发,润乾软件发布不依赖关系代数模型的计算引擎——集算器,有效地提高了复杂结构化大数据计算的开发和运算效率;2015年,润乾软件被福布斯中文网站评为“2015福布斯中国非上市潜力企业100强”;2016年,荣获中国电子信息产业发展研究院评选的“2016年中国软件和信息服务业十大领军人物”;2017年, 自主创新研发新一代的数据仓库、云数据库等产品即将面世。

数据蒋堂

《数据蒋堂》的作者蒋步星,从事信息系统建设和数据处理长达20多年的时间。他丰富的工程经验与深厚的理论功底相互融合、创新思想与传统观念的相互碰撞,虚拟与现实的相互交织,产生出了一篇篇的沥血之作。此连载的内容涉及从数据呈现、采集到加工计算再到存储以及挖掘等各个方面。大可观数据世界之远景、小可看技术疑难之细节。针对数据领域一些技术难点,站在研发人员的角度从浅入深,进行全方位、360度无死角深度剖析;对于一些业内观点,站在技术人员角度阐述自己的思考和理解。蒋步星还会对大数据的发展,站在业内专家角度给予预测和推断。静下心来认真研读你会发现,《数据蒋堂》的文章,有的会让用户避免重复前人走过的弯路,有的会让攻城狮面对扎心的难题茅塞顿开,有的会为初入行业的读者提供一把开启数据世界的钥匙,有的甚至会让业内专家大跌眼镜,产生思想交锋。

往期回顾:

数据蒋堂 | JOIN延伸 - 维度概念

数据蒋堂 | JOIN提速 - 有序归并

数据蒋堂 | JOIN提速 - 外键指针的衍生

数据蒋堂 | JOIN提速 - 外键指针化

数据蒋堂 | JOIN简化 - 意义总结

数据蒋堂 | JOIN简化-消除关联

数据蒋堂 | JOIN简化 - 维度对齐

数据蒋堂 | JOIN运算剖析

数据蒋堂 | 迭代聚合语法

数据蒋堂 | 非常规聚合

数据蒋堂 | 再谈有序分组

数据蒋堂 | 有序分组

数据蒋堂 | 非等值分组

数据蒋堂 | 还原分组运算的本意

数据蒋堂 | 有序遍历语法

数据蒋堂 | 常规遍历语法

数据蒋堂 | 从SQL语法看离散性

数据蒋堂 | 从SQL语法看集合化

数据蒋堂 | SQL用作大数据计算语法好吗?

数据蒋堂 | SQL的困难源于关系代数

数据蒋堂 | SQL像英语是个善意的错误

数据蒋堂 | 开放的计算能力为数据库瘦身

数据蒋堂 | 计算封闭性导致臃肿的数据库

数据蒋堂 | 怎样看待存储过程的移植困难

数据蒋堂 | 存储过程的利之弊

数据蒋堂 | 不要对自助BI期望过高

数据蒋堂 | 报表的数据计算层

数据蒋堂 | 报表应用的三层结构

数据蒋堂 | 列式存储的另一面

数据蒋堂 | 硬盘的性能特征

数据蒋堂 | 我们需要怎样的OLAP?

数据蒋堂 | 1T数据到底有多大?

数据蒋堂 | 索引的本质是排序

数据蒋堂 | 功夫都在报表外--漫谈报表性能优化

数据蒋堂 | 非结构化数据分析是忽悠?

数据蒋堂 | 多维分析的后台性能优化手段

数据蒋堂 | JOIN延伸 - 维度查询语法

数据蒋堂 | 文件的性能分析

数据蒋堂 | RDB与NoSQL的访问性能

数据蒋堂 | 报表开发的现状

数据蒋堂 | 谈谈临时性计算

校对:林亦霖

为保证发文质量、树立口碑,数据派现设立“错别字基金”,鼓励读者积极纠错

若您在阅读文章过程中发现任何错误,请在文末留言,或到后台反馈,经小编确认后,数据派将向检举读者发8.8元红包

同一位读者指出同一篇文章多处错误,奖金不变。不同读者指出同一处错误,奖励第一位读者。

感谢一直以来您的关注和支持,希望您能够监督数据派产出更加高质的内容。

数据蒋堂 | 大数据计算语法的SQL化相关推荐

  1. 数据蒋堂 | 大数据技术的4个E

    作者:蒋步星 来源:数据蒋堂 本文共1100字,建议阅读8分钟. 本文将大数据特点总结成4个E,可作为选择大数据技术解决方案的参考. 大数据的4个V说法在业界已经尽人皆知,这是指的大数据本身的特征.现 ...

  2. 数据蒋堂 | 大数据集群该不该透明化?

    作者:蒋步星 来源:数据蒋堂 本文约1500字,建议阅读5分钟. 通过本文为大家解读大数据集群透明化的利弊! 这好像是个多余的问题,大部分大数据平台都把集群透明化作为一个基本目标在努力实现. 所谓集群 ...

  3. 数据蒋堂 | 大清单报表应当怎么做?

    作者:蒋步星 来源:数据蒋堂 本文共1200字,建议阅读9分钟.在数据查询时,有时会碰到数据量很大的清单报表. 在数据查询时,有时会碰到数据量很大的清单报表.用户输入的查询条件很宽泛,可能会从数据库中 ...

  4. 数据蒋堂 | 谈谈临时性计算

    作者:蒋步星 来源:数据蒋堂 本文约2000字,建议阅读5分钟. 通过本文带大家评估了一下三种处理临时性计算的优劣. 临时性计算,顾名思义,是指临时发生的一些计算需求.这种计算在日常数据处理中很常见, ...

  5. 数据蒋堂 | 大清单报表的打印?

    作者:蒋步星 来源:数据蒋堂 本文共900字,建议阅读5分钟. 报表打印也需要做一个缓存机制吗? 上一期文章<大清单报表应当怎么做?>中,我们谈了大清单报表的呈现方法,其实有时候这些报表还 ...

  6. 数据蒋堂 | 时序数据从分表到分库

    作者:蒋步星 来源:数据蒋堂 本文共5500字,建议阅读10+分钟. 一个物理表的数据量太大时,就会影响查询和计算的性能. 这里的时序数据泛指一切随时间推移而不断增长的数据,比如通话记录.银行交易记录 ...

  7. 新手入门大数据,大数据的入门!!!认识大数据

    大数据介绍 大数据的由来 大数据的应用领域 大数据方面核心技术有哪些? 一.数据采集与预处理 Flume NG NDC Logstash Sqoop 流式计算 Zookeeper 二.数据存储 HBa ...

  8. print的describe的展示全部数据_大数据项目中的QA需要迎接新的挑战

    根据IDC全球半年度大数据和分析支出指南的最新预测,到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元.在大数据和业务分析解决方案上投资增长最快的行业包括银行(复合年增长率13.3%) ...

  9. 管道过滤模式 大数据_大数据管道配方

    管道过滤模式 大数据 介绍 (Introduction) If you are starting with Big Data it is common to feel overwhelmed by t ...

最新文章

  1. ubuntu9.10升级成功
  2. wine清除软件残余图标
  3. android 百度移动搜索 url 参数,百度移动搜索开放适配服务的3种方法
  4. Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility
  5. mybatis转义反斜杠_MyBatis Plus like模糊查询特殊字符_、\、%
  6. Breadth-first Search(广度优先搜索)专题1
  7. 编写lisp程序解一元二次方程_用C语言编写一程序求解一元二次方程的根。
  8. oracle procedure可以执行非常复杂的语句吗,oracle-存储过程(procedure)
  9. 深度学习模型参数初始化的方法
  10. PyTorch中的生成对抗网络(GAN)
  11. 计算机中的PS颜色填充快捷键,ps颜色填充快捷键是什么
  12. WEB安全——文件上传
  13. 关于ps cs6的滤镜 (抽出)
  14. 8.15-30题目归档
  15. Excel数据分析系列之用好底层分析工具统计分析功能
  16. 3DMax 安装 超图 插件
  17. java cobar_alibaba的COBAR真是强大.
  18. Python将多个excel文件合并为一个文件
  19. 同时使用动态库和静态库时怎么写makefile
  20. cas和saml_结合使用SAML安全令牌和Microsoft Web Services增强功能

热门文章

  1. Swift之Vision 图像识别框架
  2. 在启动activity之前,调用application的oncreate
  3. Syslog-ng+Rsyslog收集日志:logrotate日志切割、轮询(七)
  4. centos6.5下系统编译定制iptables防火墙扩展layer7应用层访问控制功能及应用限制QQ2016上网...
  5. 实战KVM|kvm安装|创建linux|控制台|克隆
  6. 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
  7. Forefront_TMG_2010-TMG建立站点间***
  8. 文件查找利器---find详解
  9. mysql创建存储过程权限问题
  10. 深入理解按位异或运算符