天天看點

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

作者:麥聰軟體

舉個宏觀上的例子:

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

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

但是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。

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

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

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

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

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

(1)免費。

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

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

添加資料源

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

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

Web工具

(4)亮點延伸:使用者管理——SQL Studio隻有管理者可以建立賬号、也隻有管理者‬可以‬增加‬和‬删除‬資料源‬,這樣避免了許多安全問題。

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

使用者管理

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

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

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

檢視,修改表

b.寫sql支援智能提示:可以根據使用者輸入的字元及其語意提示表名等資訊。

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

智能提示和資料庫清單搜尋

c.每次執行的SQL語句都會儲存在主界面的“曆史查詢”中,而且找到對應語句可以直接複用。

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

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

曆史查詢、儲存查詢、曆史導出

e.除了“曆史查詢”、“儲存的查詢”還有“曆史導出”功能,每一次下載下傳資料都會被記錄,保證了工具完整的審計功能。

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

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

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

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

生成SQL等功能

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

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

一鍵解釋執行

j.結果欄支援調整每頁展示多少條資料、且支援改變排序和全屏,看資料更友善。

k.資料庫清單、結果欄、曆史查詢、儲存查詢都支援搜尋定位。

繼續閱讀