【CSDN編者按】一直以來,結構化查詢語言 SQL 憑藉著快速、無需編碼、可移植性、明確界定標準等特性深受開發者喜愛。且自從被加入 TIOBE 編程語言排行榜以來,SQL 就一直保持在 Top 10 的範圍內。

在本文中,作者 Craig Kerstiens 發佈了一則名為《SQL: One of the Most Valuable Skills》的博文,引起無數網友共鳴,其紛紛表示,SQL 確實是一門被低估的語言。

對此,你怎麼看?

“SQL 被低估了!”

作者 | Craig Kerstiens,雲技術工程師@citusdata

譯者 | 彎月

責編 | 屠敏

出品 | CSDN(ID:CSDNNews)

以下為譯文:

在我的職業生涯中我學習了很多技術,但是我覺得最實用的技術當屬 SQL。對我來說,SQL 是最有價值的技術,原因有以下幾個方面:

  1. SQL 在不同的職責和學科中都很有價值。
  2. 只需學習一次,一勞永逸。
  3. 你可以成為超級英雄。掌握這門技術,會讓你變得非常強大,因為很多人都沒能熟練掌握這門技術。

SQL 是一個可以隨處使用的工具

無論你的職責是什麼,你都可以通過 SQL 讓你工作變得更輕鬆。目前作為一名產品經理,我的工作重心在於查看數據、分析我們在產品方面的影響以及塑造產品規劃藍圖。如果我們剛剛發佈了一個新功能,那麼相關的數據(比如是否有人查看這個功能等)可能都保存在關係數據庫中。如果我正在追蹤一些關鍵性的指標(例如月度增長),那麼很可能這些數據也保存在關係數據庫中。另外,我們所有的工作(例如系統記錄)都需要使用 SQL。掌握如何使用 SQL 可以為我節省大量的工作,因為我無需向他人詢問具體的數字。

但是,即使在成為產品經理之前,我也會使用 SQL 來了解系統內部的情況。作為一名工程師,通常我可以通過 SQL 更快地獲取我想要的信息,而無需使用 Ruby 或 Python 編寫腳本。當我的 webapp 變得非常遲緩時,我必然需要了解其所執行的 SQL 以及優化的方法。當然,這遠遠超出了對 SQL 基本的理解……但是為查詢添加索引就可以解決問題,而無需增加緩存,這還是非常值得花費額外的時間學習。

SQL 的知識具有持久性

我記得大約在20年前,我創建了第一個網頁。我感覺非常欣喜,還加入了一些 Javascript 來強化頁面,提示用戶點擊是/否或提供一些輸入。後來,大約在10年前,jQuery 問世了,雖然有時它很冗長,但是學習新功能可以讓頁面整體上更加美觀,所以我重新學習了 JS 的 jQuery 方法。再到後來,Angular - > React / Ember 相繼出現,現在為了將基本的 Javascript 引入我的網站,我需要一整套的流程,而現實情況是我所做的仍然只是讓用戶點擊是/否——與20年前一樣。

相反,SQL 卻沒有太多改變。雖然它已經發生了改變——成為了現代的 SQL,但是我仍然認為與其他技術相比,這點變化幾乎微不足道。沒錯,每隔幾年就會一個新的標準問世,偶爾還有新的內容(比如支持窗口函數或CTE),但是 SQL 的基礎知識始終如一。只需學習一次 SQL,你就可以在工作中反覆使用,而無需重新學習。請不要誤會,我喜歡學習新的東西,但我寧願學習一些真正的新東西,而不僅僅是完成同樣任務的另一種方法。

SQL 的獨一無二

大多數應用程序開發人員都未能熟練地掌握 SQL,他們沒有認真學習這項技術。正因為真正掌握 SQL 的人非常少,所以可能你看起來更加出眾。我原來的公司擁有數百名的工程師,每週都有好多人(從初級工程師到高級首席工程師)來問我:“你能幫我看看這個查詢該怎麼寫嗎?”因為你掌握了某項很少人掌握的技術,所以你可以幫助別人,而當你遇到困難需要他們幫助時,他們也會義不容辭。

如果你還未能精通 SQL 的話,或許可以馬上行動起來。

你怎麼看?

對此,網友們也各抒己見:

評論1:

SQL 是我見過的最令人歎為觀止的一個概念。它有將近五十年的歷史,而且沒有絲毫要被取代的跡象。我們創造無數的其他技術來存儲和處理數據,但似乎我們總是在設法利用這些技術(例如 Hive,Presto,KSQL等)重建 SQL。

我在經營一家創業公司,為客戶構建分析基礎架構。我們非常重視 SQL,而本文的內容非常真實。

與普通的軟件工程師相比,分析師和數據科學家在工作中編寫的 SQL 越來越多。

MMP 數據倉庫(redshift,bigquery,snowflake等)的出現,使得即使預算有限的公司也能夠使用 SQL 來存儲和查詢大量數據。SQL 比以往任何時候都更強大,更有價值。

如果注意觀察某個普通的企業,你會發現大多數軟件工程師都不擅長 SQL。他們怎麼能這樣?大多數複雜查詢都是分析查詢。ORM 可以處理應用程序代碼需要處理的大多數基本功能。

但是,本文沒有提到一點:許多後臺的工程師已經抽象出了 SQL,當然還有前端和移動。所以即便你不太瞭解 SQL 也可以成為一名優秀的開發人員。

另一方面,擁有初級或中級分佈式文件系統、流媒體數據或各種其他 NoSQL技術知識的“數據工程師”湧現了出來。通常他們對原始 SQL 的瞭解甚至比初級工程師更少,因為 SQL 位於他們強大的數據工具的底層。

但是,如果你真正掌握了 SQL,再加上如今掌握這項技術的少之又少,所以你可以擁有巨大的權力。可能比以往任何時候都強大。

評論2:

眾所周知,SQL 是關係數據庫語言,其基礎是關係代數與集合論,因為有了這樣強大的後盾與堅固的基礎,所以 SQL 可以經受住時間的考驗而長久不衰。也正是因為這個原因,歷經多年乃至在不同的職責下你也不需要重新學習。

但是,這並不是說 SQL 就是完美的,事實上 SQL 距離“完美”還差得非常遠。因為 SQL 還有很多未能很好地支持,甚至背離關係模型之處。

舉個最簡單的例子,關係模型基於二值邏輯(即真/假),而 SQL 是三值邏輯:真、假、NULL。平白多出一個 NULL,其引發的問題也非常多,例如:

(A = B) OR (A<>B)

很顯然這是一個恆真表達式,要麼相等,要麼不相等,還有第三種選擇嗎?有!在 SQL 中,如果 A 為 NULL 或 B 為 NULL,則這個表達式的結果為 NULL。

除此之外,還有 SQL 中有重複數據,但是集合論中沒有,重複的數據在集合中會被視作一個。

最後再說一個,集合中的數據項沒有順序,而 SQL 表中的列有從左到右的順序。

所以,我們希望 SQL 能夠緊緊圍繞關係代數與集合論,取得更好的成長與發展。

原文:http://www.craigkerstiens.com/2019/02/12/sql-most-valuable-skill/

本文為 CSDN 翻譯,如需轉載,請註明來源出處。作者獨立觀點,不代表 CSDN 立場。

相關推薦

推薦中...