成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

第45期:大數據計算語法的SQL化

企業動態
回歸SQL是當前大數據計算語法的一個發展傾向,一些新的大數據計算體系一般也將SQL作為首選的計算語法,經過幾年時間的混戰之后,現在SQL又逐步拿回了主動權。

【數據蔣堂】第45期:大數據計算語法的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框架使用它的數據類型,這樣還是會限制高性能算法的實現。

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-08-09 16:13:48

SQL大數據語法

2017-08-16 15:31:31

SQL語法集合化

2018-03-14 17:43:36

大數據集群運算

2017-06-14 23:08:29

報表數據計算層

2017-08-22 21:55:18

SQL語法離散性

2017-09-13 08:45:33

遍歷SQL運算

2016-03-29 16:51:24

2017-09-05 22:34:24

遍歷SQL運算

2012-02-08 16:46:07

網絡安全技術周刊

2018-01-10 15:25:43

JOIN維度SQL

2023-05-15 07:40:13

大數據SQL語法

2017-07-19 06:37:18

數據庫計算存儲

2017-07-28 10:38:13

大數據云計算

2019-11-07 15:31:48

中臺大數據

2018-12-06 14:07:45

CynosDB騰訊云

2016-10-25 15:59:22

大數據備份IT周刊

2016-12-27 20:23:10

工業大數據人工智能智能制造

2017-08-02 17:00:51

SQL關系代數數據

2014-01-24 13:34:57

IT半小時

2017-07-12 07:27:11

數據庫中間表存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91电影在线播放 | 精品日韩在线观看 | 中文字幕 亚洲一区 | 亚洲国产福利视频 | 国产视频二区 | 一区二区精品 | 日韩中文字幕在线 | 国产欧美日韩视频 | 久久精品一区二区三区四区 | 亚洲国产精品久久人人爱 | 久久精品亚洲成在人线av网址 | 国产农村妇女精品一二区 | 亚洲 欧美 日韩在线 | av黄色国产 | 9191成人精品久久 | 日日操夜夜操天天操 | 欧美一区二区三区的 | 欧美日韩精品综合 | 五月天国产 | 精品国产欧美一区二区三区不卡 | 国产视频精品在线观看 | 欧美韩一区二区 | 欧美www在线观看 | 精品国产一区二区三区久久久蜜月 | 精品成人在线 | 久久88 | 电影91久久久 | 在线观看中文字幕dvd播放 | 久久精品91| 国产农村妇女精品一区 | 国产欧美日韩综合精品一 | 成人免费在线视频 | 欧美一区二区三区在线观看视频 | 国产黄色大片 | 欧美精品1区2区 | 国产成人免费视频 | 毛片网站免费观看 | 一级欧美| 亚洲福利免费 | 亚洲精品9999久久久久 | 欧美综合自拍 |