明明可以通過調用API來操作資料庫,那麼SQL還有存在的意義嗎?

麥聰軟件 發佈 2024-03-29T14:05:48.428277+00:00

舉個宏觀上的例子:曾經有一個叫Google的公司覺得RDBMS這套東西太麻煩了,不適合大規模計算,所以在2005年發明了一個東西叫做Mapreduce,大概就是說用戶需要提供mapper 和 reducer函數,這兩個函數可以對數據干任何事情,框架會幫助用戶做好並行。

舉個宏觀上的例子:

曾經有一個叫Google的公司覺得RDBMS這套東西太麻煩了,不適合大規模計算,所以在2005年發明了一個東西叫做Mapreduce,大概就是說用戶需要提供mapper 和 reducer函數,這兩個函數可以對數據干任何事情,框架會幫助用戶做好並行。

但是15年後我們已經知道結果了,Mapreduce這種過度自由的框架其實並沒有人玩的那麼轉,存活下來的都是sparkSQL,flinksql,Hive,Snowflake這些用SQL的產品。


從程序語言的角度上來說,API vs SQL 本質上是Imperative(命令式編程) vs Declarative(聲明式編程)

簡單來講 Imperative類似於你扮演一個程式設計師,對於一個功能,寫出邏輯鏈上的每一行代碼,然後程序運行得到結果。

而Declarative類似於你扮演一個產品經理,對於一個功能,你只需要描述你需要的結果,然後某程序會把中間的過程生成好。

不論從學術角度還是工程角度來講Declarative是更加進步的


再舉個微觀上的例子:

假設兩張表,一張user(id, name)一張salary(id, user_id,salary)當你同時需要所有人的name和salary的時候,你會運行以下SQL

select * from user inner join salary on user.id = salary.user_id

但是如果你只有簡單的CRUD API的話,你可能需要拿到所有user.id 然後走一個for loop 去salary裡面找到對應的id,從正確性上來說也說得過去,但是性能會非常捉急,再後來你會發現所有的優化 = 你在用戶側重新實現了一個join算法。而如果用SQL的話會調用資料庫內部的高效join算法。


所以,Declarative比Imperative更適合處理數據。很多時候你認為的約束和不便,其實是性能提升的來源。

而且,API是很難有一個語言的自由度的,很多SQL裡面寫起來很自然的東西要是用API實現的話都很醜陋。


2022 IEEE 程式語言榜單公布,最受歡迎以及發展趨勢最好的是Python,但工作中最吃香的語言卻是SQL。

作為一種廣泛使用的數據專業語言,很多領先的科技公司都依賴於關係型資料庫和SQL。像MySQL或者Oralce這類成熟的資料庫,它已經和SQL深度綁定了

SQL可以提供更高的性能和效率,以及更強的數據一致性和完整性,它能處理複雜的數據分析和查詢

綜上所述SQL想要輕易被取代是不可能的


想要掌握SQL,你可能需要這款SQL工具 : SQL Studio

(1)免費。

(2)免費的基礎上支持幾乎所有主流資料庫,不僅有MySQL、Oracel、PostgresSQL等國外資料庫,還支持武漢達夢、人大金倉等國產資料庫。

(3)突出亮點:Web版工具——一次部署,團隊成員都能使用,占用的硬體資源都在伺服器上;只要有可登錄的軟體連結和帳號、密碼,任意設備隨時可用這款工具:省去了繁瑣的工具安裝配置、升級過程。(對於團隊協作和教學場景簡直不要太友好)

(4)亮點延伸:用戶管理——SQL Studio只有管理員可以新建帳號、也只有管理員‬可以‬增加‬和‬刪除‬數據源‬,這樣避免了許多安全問題。

(5)性能穩定且可圈可點:

a.可視化管理——支持圖形化界面對資料庫、表進行管理;支持直接修改表結構、表數據等,還能顯示操作對應的sql語句。

b.寫sql支持智能提示:可以根據用戶輸入的字符及其語意提示表名等信息。

c.每次執行的SQL語句都會保存在主界面的「歷史查詢」中,而且找到對應語句可以直接復用。

d.經常需要用到的SQL語句也可以直接保存在主界面「保存的查詢」中,不用再從電腦本地導入,而且能直接修改、複製、刪除。

e.除了「歷史查詢」、「保存的查詢」還有「歷史導出」功能,每一次下載數據都會被記錄,保證了工具完整的審計功能。

f.超強的數據導入、導出能力:近700萬行數據導出只需20多秒,比Navicat還快兩倍。

g.穩定性好:展開資料庫中一萬張表,絲毫不卡頓。SQL編輯框支持注釋,有注釋也能很好地執行語句,不出bug穩定性強。

h.一鍵批量執行:單擊執行編輯框內所有SQL語句,方便大家進行刷庫等操作。

i.一鍵解釋執行:單擊即可幫助大家分析sql語句的性能,輔助優化。

j.結果欄支持調整每頁展示多少條數據、且支持改變排序和全屏,看數據更方便。

k.資料庫列表、結果欄、歷史查詢、保存查詢都支持搜索定位。

關鍵字: