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