2024年5月22日 星期三

SQL 50 週年生日快樂!今天來談談為什麼SQL仍然占主導地位?


1974 年 5 月,Donald Chamberlin 和 Raymond Boyce 發表了一篇關於 SEQUEL 的論文,(Structured English Query Language,結構化英語查詢語言) ,並在1976年11月的《IBM研究與開發雜誌》上公布新版本的SQL(叫SEQUEL/2) 。1980年改名為SQL。

結構化查詢語言(SQL) 在 20 世紀 70 年代後期被 Oracle 等資料庫公司與其新型關係資料庫產品一起採用。SQL現已 50 歲了。

SQL是為了管理關聯性資料庫所設計,並且作為管理資料和與資料互動的方式不斷發展和發展。根據Stack Overflow的調查,目前SQL是程式設計師經常使用的第三大流行語言。 2023 年,IEEE指出,SQL 是開發人員在找工作時最受歡迎的語言,因為它可以與其他程式語言結合。
 
對於一種已經出現並且被採用幾十年的語言來說,SQL在開發人員中的聲譽褒貶不一,喜歡的很喜歡,不喜歡的不喜歡。隨著時間推移,許多其他語言來來去去的時候,我們不禁要問:為什麼 SQL 仍然被大部分開發人員使用?

普遍性和穩定性


SQL 仍然被使用的原因之一是它無所不在。對於許多開發人員來說,了解SQL是開發過程的基礎,學習SQL也能獲得更多工作機會。除了這種普遍性之外,SQL很穩定。它是開發人員可以信賴的有效標準,並且不會因版本而產生變化,這使得 SQL 更適合大型專案規劃,開發團隊可以提前規劃,當開發人員有異動的時候,SQL可以輕易地在不同開發人員之間轉移專案。

SQL不僅滿足應用程式內資料的相容性要求。如果使用 SQL 作為查詢資料元件中的資料方法,可以在需求變更時,更輕鬆地轉換為使用其他選項。例如,如果開發人員從一個資料庫切換到另一個資料庫,在使用 SQL時無需編輯應用程式邏輯,因為SQL在不同資料庫之間都是相同的。

由於 SQL 的行為就像一種標準,因此它的好處是輕鬆地轉移資料。 SQL 不會被綁定到專屬的程式語言和專屬儲存資料方式的特定資料庫,開發者可以用它做想做的事情,不會被限制住。廣義來說,開發者不再需要專門考慮資料庫以及優勢。相反地,可以將SQL中的工具視為基礎架構規劃的控制點。

舉例來說,如果執行 MySQL 資料庫,想要變更為 PostgreSQL 等別的選擇,這些資料庫的操作和管理資料的方式會有所不同。但從功能的角度來看,使用 SQL 查詢該資料會得到相同的結果。

以科學為後盾


除了SQL很受歡迎以外,從技術角度來看 SQL 所提供的功能也值得一看。SQL最大的好處是它的設計符合邏輯。這意味著,當開發者了解它的工作原理時,可以優雅而巧妙的方式使用。

研究SQL的時候,我們必須研究 SQL 和關聯式資料庫之間的聯繫。對於許多開發人員來說,SQL 與關聯式資料庫模型緊密相連,擁有很多缺點。但如果把SQL 作為一種語言,與關聯式資料庫分開,不要混和一談,情況就比較不一樣了。

如今,許多非關聯式資料庫已經採用了類別表模型和 SQL 語言。 SQL和關聯模型成為同義詞已經有很長一段時間了,隨著非關聯式資料庫的興起,界線變得更加模糊。例如,一些鍵值儲存和一些文件儲存資料庫採用了類似表的結構來組織數據,有些提供了 SQL 子集合或類似 SQL 的查詢語言以優化可訪問性,使開發人員更容易使用。

多年來,關聯模型已被證明是一種非常有效的資料庫設計模型。原因是該模型基於非常精確的數學理論。這些強大的理論基礎是關聯資料庫在電腦科學和軟體工程中仍然如此受歡迎的原因。隨著時間過去,SQL 的存取邏輯和運算能力變得更加容易,並用每個人都能理解的統一方式運作。

此外,SQL在 2016 年支援不同的 JSON 格式。多年來,想要使用JSON 的開發人員可以選擇使用以文件為導向的資料庫(例如 MongoDB)作為其資料存儲,而其他資料庫由於效能和易用性而成為次要選擇。如今,情況並非如此,因為許多關聯資料庫(例如 PostgreSQL)已經實現了 JSON 支持,對於某些工作,該支援可以與文件資料庫一樣快甚至更快。這種支援使開發人員可以更輕鬆地設計直接支援其應用程式,而不是局限於特定的方法。

最佳化的處理方式


SQL的另一個好處它是一種宣告式程式設計。宣告式程式設計的工作方式是建造電腦程式的結構和元素,表達計算的邏輯而不用描述它的控制流程,描述問題領域內目標的性質,讓電腦明白目標,而非流程。對於開發者和資料庫來說,這讓建立查詢變得更加容易,開發者可以專注於想要實現的結果,而不是將整個資料放在一起。

與任何強大的語言一樣,也有不喜歡SQL的人。大部分開發者最常抱怨的是 SQL 優化器在提高效能方面不是很有用,開發者普遍希望提高效率和反應速度,但這些工具的效果取決於一開始投入的工作準備;開發者有時會在語言編輯器方面面臨類似的問題,儘管編輯器能成功地將開發者的程式碼轉換為更小、更快的二進位文件,不過卻常常嚴重失敗,產生相反的結果。

對 SQL 的另一個常見批評是由於它與關聯式資料庫的緊密聯繫。傳統資料庫設計中如此根深蒂固的東西如何適合現代世界?但事實上,SQL和關聯式資料庫的組合如今仍在為數百個用例提供服務,提供可滿足應用程式需求的可擴展性和效能。

滿足現代開發人員的需求


隨著軟體需求、軟體開發節奏和開發人員數量的增加,SQL 面臨的挑戰是:從理論角度深入了解 SQL 運作方式的開發人員越來越少。雖然DevOps和網站可靠度工程等專注於滿足企業對 IT 服務的需求,但所涉及的角色往往涵蓋 IT 堆疊的多個部分,而不是特定的功能。

當應用程式開始大規模擴展或出現效能問題時,了解 SQL 的工作原理會非常有用。了解查詢設計,例如如何從較大的表中挑選數據,而不是多次解析同一個表中的數據,會對效能產生巨大影響。這些資料管理技能實際上取決於對資料庫理論的理解。這需要時間來理解和實務經驗。SQL可以更輕鬆地將需求從底層基礎架構中找出來,即使在資料庫選擇上有一點失誤,SQL 也可以讓您更輕鬆地轉移到更好的選擇。

整體來說,SQL 仍然受到許多開發者的歡迎,SQL也會繼續流行,因為SQL解決了如何處理資料的一些最大挑戰,當然對於某些人來說,SQL事非常糟糕的選擇,但不可置否的,我們每天都依賴 SQL 為我們提供價值的大量資訊,目前很流行的AI也是。



💪💪💪課程推薦


0 意見:

張貼留言