
【每周一期-數據蔣堂】SQL用作大數據計算語法好嗎
當前的大數據平臺在處理結構化數據時大都仍然以提供SQL語法為主流。兼容SQL的好處是很明顯的,SQL的應用非常廣泛,會SQL的程序員很多,如果繼續(xù)采用SQL則可以避免許多學習成本。支持SQL的前端軟件也很多,使用SQL的大數據平臺很容易融入這個現成的生態(tài)圈中。大數據平臺打算替代的傳統數據庫也是SQL語法的,這樣兼容性會很好,移植成本相對較低。
但繼續(xù)使用SQL也有缺點,最大的問題就是難以獲得大數據計算最需要的高性能。
我們在前面的文章中提到過,SQL中缺乏一些必要的數據類型和運算定義,這使得某些高性能算法無法描述,只能寄希望于計算引擎在工程上的優(yōu)化。傳統商業(yè)數據庫經過幾十年的發(fā)展,優(yōu)化經驗已經相當豐富,但即使這樣仍有許多場景難以被優(yōu)化,理論層面的問題確實很難在工程層面解決。而新興的大數據平臺在優(yōu)化方面的經驗還遠遠不如傳統數據庫,算法上不占優(yōu),就只能靠集群更多的機器獲得性能提升。另外,SQL還是一種描述性語言,不擅長指定執(zhí)行路徑,而想獲得高性能常常需要專門優(yōu)化的執(zhí)行路徑,這又需要增加許多特殊的修飾符來人為干預,那還不如直接用過程性語法更為直接,這也會妨礙用SQL寫出高性能的代碼。
SQL發(fā)明之初的計算機硬件能力還比較差,要保證實用性,SQL的設計必須適應當時的硬件條件,這就導致了SQL很難充分利用當代計算機的硬件能力,具體來說就是大內存、多線程和集群。SQL中的JOIN是按鍵值對應的,而大內存情況下其實可以直接用地址對應,不需要計算HASH值和比對,性能可以提高很多;SQL的數據表無序,單表計算時還容易做到分段并行,多表關聯運算時一般就只能事先做好固定分段,很難做到同步動態(tài)分段,這就無法根據機器的負載臨時決定并行的線程數量;對于集群運算也是這樣,SQL在理論上不區(qū)分維表和事實表,JOIN運算簡單地定義為笛卡爾積后過濾,要實現大表JOIN就會不可避免地產生占用大量網絡資源的HASH Shuffle動作,在集群節(jié)點數太多時,網絡傳輸造成的延遲會超過節(jié)點多帶來的好處。
如果我們設計新的代數體系和運算模型,就可能克服SQL的這些缺點,一方面更好地描述高性能算法,另一方面能充分利用當前的硬件資源,從而獲得更高的性能。
不過,這樣一來,對外的接口也就不再是SQL語法了,不能再兼容以往的代碼了。
順便提一句,新的運算模型并不是指當前業(yè)內的NoSQL,NoSQL并不是為高性能計算設計的,事實上它以犧牲計算能力為代價而換取了可橫向擴展的能力,對于復雜大數據計算的需求而言是個倒退。
有沒可能讓高性能和兼容性共存呢?比如采用新的內核模型,然后基于它去解釋SQL語法,或者能將SQL代碼自動移植到新體系下。
理論上是可能的,解釋或移植SQL是有不少工作量,但并不是非常困難。不過,這樣做只能獲得語法的兼容性,并不能得到高性能。高效的代碼要針對運算模型的特征去編寫,而SQL語法中并沒有體現這些信息,一定要把SQL移植過來,仍然會面臨前述的工程層面優(yōu)化問題,沒辦法做得最優(yōu)效果。事實上,兩種均采用SQL的數據庫,要讓其特有的語法能夠互相解釋和移植,在不影響性能的前提下都是很難做到的。新興的大數據廠商都愿意提供這種可移植的技術以降低老數據庫的移植成本,但并沒有多少成功者。
那么,結論是什么呢?
對于中短期目標的產品,那么繼續(xù)采用SQL是合理的,這將有利于產品的快速應用,性能主要依靠硬件能力或更大規(guī)模的集群來提升。而面向長期目標的產品,那就有必要采用取代關系代數體系的運算型,為獲得高性能,不能也不必再提供兼容SQL的方案了,需要忍受漫長的健全生態(tài)圈過程。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經網絡(RNN)家族中,長短期記憶網絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數據分析師報考條件詳解與準備指南? ? 在數據驅動決策的時代浪潮下,CDA 數據分析師認證愈發(fā)受到矚目,成為眾多有志投身數 ...
2025-07-11數據透視表中兩列相乘合計的實用指南? 在數據分析的日常工作中,數據透視表憑借其強大的數據匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數據分析師:連接數據與業(yè)務的價值轉化者? ? 在大數據與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數據查詢到趨勢預判? ? 在數據驅動決策的時代,預測分析作為挖掘數據潛在價值的核心手段,正被廣泛 ...
2025-07-10數據查詢結束后:分析師的收尾工作與價值深化? ? 在數據分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數 ...
2025-07-10CDA 數據分析師考試:從報考到取證的全攻略? 在數字經濟蓬勃發(fā)展的今天,數據分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數據背后的時間軌跡? 在數據分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數據類型:時間維度的精準切片? ? 在數據的世界里,時間是最不可或缺的維度之一,而year_month數據類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數據分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數據分析師認證考試中,Python 作為數據處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數據趨勢與突變分析的有力工具? ? ? 在數據分析的廣袤領域中,準確捕捉數據的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數據分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數據分析師認證作為國內權威的數據分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網絡(LSTM)作為循環(huán)神經網絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統計學方法在市場調研數據中的深度應用? 市場調研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統計學方法則是市場調研數 ...
2025-07-07CDA數據分析師證書考試全攻略? 在數字化浪潮席卷全球的當下,數據已成為企業(yè)決策、行業(yè)發(fā)展的核心驅動力,數據分析師也因此成為 ...
2025-07-07剖析 CDA 數據分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數據分析師考試作為衡量數據專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數據處理的關鍵技能? 在數據處理與分析工作中,數據格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數據分析師視角:從數據迷霧中探尋商業(yè)真相? 在數字化浪潮席卷全球的今天,數據已成為企業(yè)決策的核心驅動力,CDA(Certifie ...
2025-07-04CDA 數據分析師:開啟數據職業(yè)發(fā)展新征程? ? 在數據成為核心生產要素的今天,數據分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03