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