1. 程式人生 > >SQL還是那個SQL麼?

SQL還是那個SQL麼?

前言

今天MLSQL群裡有個小夥伴問到,能把Spark, Flink 這些框架執行在黑莓上麼?
我回答道:可以作為一個內建SQL計算引擎嵌入(不是資料庫),其他可能沒啥用了。

不過這又引起了我的另外兩個思考,第一個是,Spark真的能(或者有必要)跑在移動裝置上麼?第二個問題是,在傳統Web/App開發領域,SQL只是資料庫的一個操作語言(DSL),但是在大資料裡,SQL已經遠遠超越了資料庫操作語言的範疇,而是資料處理的標準語言,而在MLSQL中,SQL被髮揮到極致,是一切資料處理的核心語言,無論爬蟲,資料處理,流式,ML(AI)都是用SQL做互動的。 那麼為什麼在大資料領域SQL會有這種變革呢而在Web/App開發領域沒有這種事情發生呢?

Spark真的能(或者有必要)跑在移動裝置上麼

首先,Spark經過改造完全可以跑在移動裝置上的,其次是這也是有必要的。之前跟挖財的小夥伴交流,他們用改造過的Spark引擎可以把一些小資料量的複雜SQL計算縮小到幾毫秒,那麼如果將該引擎移植到Ios/Android/BlackBerry, 根據我前面提到的第二個思考,我們不再把SQL當做一個數據庫操作語言,而是資料處理語言,我在移動裝置上完全可以把資料處理全部換到spark引擎上,而且可以實現處理邏輯的熱升級(手機端連線伺服器,更新SQL指令碼)就能更新資料處理邏輯。會不會功耗過高?幾毫秒的CPU(GPU/AI晶片)而已。

對 Web/App小夥伴思維模式的衝擊

我們知道以前在做Web的時候,分庫分表的痛點是查詢的時候很難受。而早期Spark無法被Web/App的小夥伴使用,因為他做不到毫秒級的計算延遲。但是有針對性的對Spark做優化(不再針對大資料,而是針對Web/App),得益於Spark的多資料來源支援,以及高效的SQL計算引擎,分表分庫查詢不在是噩夢,我們可以輕易實現。事實上,tidb已經是這麼做的了。這是以第一點。

第二點是,很多業務處理環節,是不是都能通過SQL來處理呢?不能說大部分,但是應該相當一部分是可以不用寫程式碼了,而是通過SQL來完成的,那這也意味著,我們可以熱更新的好處。所有資料處理無非如下三種模式:

1063603-b4e2f05437141d74.png image.png

而在MLSQL裡,我們甚至對API也用SQL做了抽象:

1063603-3d54f667e994dc57.png image.png

最後的實現效果如下:

1063603-0fde0c98fa0ff15f.png image.png

我們會用sql對傳遞進來的data的每條內容中的feature欄位進行處理,得到的結果也會是一張表。

結論

  1. SQL可以在Web/App 領域進一步發揚光大,就像他在大資料裡一樣。
  2. Spark 團隊可以考慮將Spark移植到Web/App領域。
  3. 期待挖財團隊的新開源專案。