你對SQL的認識可能是錯的

jopen 9年前發布 | 11K 次閱讀 SQL

 

Lukas Eder是 jOOQ 母公司 Data Geekery GmbH 的創建者兼首席執行官。關于SQL,他經常聽到一些錯誤的觀點,比如:

SQL已經老化。我們為什么不使用更現代的技術?

像匯編一樣,SQL是低級語言。你是喜歡使用匯編還是Java呢?類似地,你是喜歡使用SQL還是Hibernate呢?

</div>

近日,他發表了一篇 博文 ,逐一反駁了類似的偏見和謬論。

謬論1:SQL已經老化

Lukas 認為,許多人之所以認為SQL已經老化,是因為它是一項已經超過了30年的ISO/IEC標準,而且是以更為古老的關系代數學為基礎。但他指出,知名網站 Use The Index, Luke 的作者 Markus Winand 已經很好地 展示 了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作為查詢語言, Mark Madsen已經在Strata Conf大會上做了很好地展示

謬論4:數據庫不適合編寫業務邏輯

在Lukas看來,這是最大的謬論,因為事實正好相反,數據庫是進行統計運算的最佳之處。它有許多信息可以幫助運算,而且是在內存中進行。它還有約束、索引和其它各種元數據來幫助優化查詢。這種優化使用純Java代碼可能是無法實現的。另外,這種方法還有一個巨大的優勢,就是業務邏輯在一個地方實現,卻可以供多個應用程序使用。

此外, Lukas 還以窗口函數為例說明了SQL的簡潔性,并指出,窗口函數及其它許多很棒的SQL特性自 SQL:2003 起已經實現標準化,使用這些特性,無需擔心被數據庫供應商鎖定。

最后,Lukas總結道:

  • SQL能做的事比你知道的要多許多;
  • SQL比許多其它技術都要先進得多;
  • SQL是實現業務邏輯的理想之地。
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!