SQL已經(jīng)老化。我們?yōu)槭裁床焕酶F(xiàn)代的技能? 像匯編一樣,SQL是初級語言。你是喜歡利用匯編照舊Java呢?雷同地,你是喜歡利用SQL照舊Hibernate呢?
克日,他頒發(fā)了一篇博文,逐一辯駁了雷同的成見和謬論。
謬論1:SQL已經(jīng)老化
Lukas認為,很多人之所以認為SQL已經(jīng)老化,域名免費備案 directadmin購買,是因為它是一項已經(jīng)高出了30年的ISO/IEC尺度,并且是以更為陳腐的干系代數(shù)學(xué)為基本。但他指出,知名網(wǎng)站UseTheIndex,Luke的作者MarkusWinand已經(jīng)很好地展示了SQL這些年的成長。現(xiàn)代SQL已經(jīng)可以做很多超出通用編程語言開拓人員料想的事。
謬論2:SQL是初級語言
Lukas并不認為SQL是同匯編一樣的初級語言。相反,他認為SQL是主流語言中第一流的,因為SQL是獨一真正風(fēng)行的第四代編程語言。并且,SQL照舊獨一真正風(fēng)行的聲明式編程語言。利用SQL,只需要匯報呆板需要什么數(shù)據(jù),如何獲取這些數(shù)據(jù)則由查詢闡明器完成。
謬論3:NoSQL更現(xiàn)代
“NoSQL比SQL更現(xiàn)代”,Lukas認為,這是NoSQL數(shù)據(jù)庫供給商的宣傳之詞。他指出,假如(條理化)的JSON數(shù)據(jù)存儲就是現(xiàn)代的話,那么SQL并不落伍。很多干系型數(shù)據(jù)庫提供商都已經(jīng)集成了JSON。并且,縱然是對半布局化數(shù)據(jù)而言,SQL仍然是最好的查詢和數(shù)據(jù)批處理懲罰語言。實際上,SQL就是針對SQL呈現(xiàn)之前的雜亂而設(shè)計的。關(guān)于這一點,感樂趣的讀者可以閱讀《Codd的干系型概念——NoSQL兜了個圈又回到了原點?》。現(xiàn)如今,很多大數(shù)據(jù)數(shù)據(jù)庫提供商都押寶SQL作為查詢語言,MarkMadsen已經(jīng)在StrataConf大會上做了很好地展示。
謬論4:數(shù)據(jù)庫不適合編寫業(yè)務(wù)邏輯
在Lukas看來,這是最大的謬論,因為事實正好相反,數(shù)據(jù)庫是舉辦統(tǒng)計運算的最佳之處。它有很多信息可以輔佐運算,并且是在內(nèi)存中舉辦。它尚有約束、索引和其它各類元數(shù)據(jù)來輔佐優(yōu)化查詢。這種優(yōu)化利用純Java代碼大概是無法實現(xiàn)的。別的,這種要領(lǐng)尚有一個龐大的優(yōu)勢,就是業(yè)務(wù)邏輯在一個處所實現(xiàn),卻可以供多個應(yīng)用措施利用。
另外,Lukas還以窗口函數(shù)為例說明白SQL的簡捷性,并指出,窗口函數(shù)及其它很多很棒的SQL特性自SQL:2003起已經(jīng)實現(xiàn)尺度化,利用這些特性,無需擔(dān)憂被數(shù)據(jù)庫供給商鎖定。
最后,Lukas總結(jié)道:
SQL能做的事比你知道的要多很多;
SQL比很多其它技能都要先進得多;
SQL是實現(xiàn)業(yè)務(wù)邏輯的抱負之地。