的sql No SQL正淘汰SQL?

2021-10-14 18:48:08 字數 1997 閱讀 2139

全文共1631字,預計學習時長5分鐘

no-sql正淘汰sql?

上週,朋友給我**了某成功企業家的郵件,裡面宣稱「sql已經過時了」。

該企業家聲稱,mongodb和redis 這樣受歡迎的 no-sql 資料庫,會慢慢地將基於sql的資料庫淘汰。因此,身為資料科學家,學習sql是「抱殘守缺」

看到他的郵件我非常震驚,他是怎麼得出這麼離譜的結論的?但這也令我好奇......別人會不會也這樣誤解了呢?該企業家有大量擁躉,他本人也直言不諱:新的資料科學家收到建議別再學習sql了嗎?

可能其他人也認為sql正在被淘汰,在此,我想公開向該企業家作出回應。

在從事資料科學的職業生涯裡,學習sql非常有必要。no-sql無法撼動學習sql的意義。

基本上,有兩個理由可以保證sql在未來幾十年都不會過時。

理由1:no-sql資料庫不會取代presto、redshift、bigquery等分析資料庫

不論應用程式使用的是mysql這樣的sql後端,還是像mongodb那樣的no-sql後端,該後端中的資料最終都會被載入到專門的分析資料庫中,比如redshift、snowflake、bigquery或 presto。

公司為什麼把資料轉移到redshift這樣的專欄儲存中?因為專欄儲存能更快地執行分析查詢,不論是nosql還是像mysql這樣的行儲存資料庫。事實上,我敢打賭,專欄儲存資料庫的普及速度與nosql資料庫一樣快。

因此,像nosql以及其他資料庫還有匹配的應用程式,它們的技術通常與資料科學家無關,因為他們不使用資料庫應用程式。當然也有一些例外,將在後文討論。

理由2:nosql資料庫的優勢並非不支援sql語言

事實證明,如果支援基於sql的查詢引擎是有意義的,那麼no-sql儲存可以實現它。類似地,sql資料庫也可以支援nosql查詢語言,但是它們選擇不支援。

那麼,為什麼專欄儲存資料庫有意選擇提供sql介面呢?

他們做出這樣的選擇,是因為sql語言在表達資料操作指令上非常強大。

以乙個簡單的查詢為例,它是nosql資料庫下mongodb的計算集合中的文件數量。

注意:mongodb中的文件類似於行,而集合則類似於表。

db.sales.aggregate( [
}
}
] )
將其與等效sql進行比較。

select count(1) from sales
顯而易見,對於想要提取資料的人來說,sql語言是更好的選擇。nosql資料庫支援不同的語言,因為在資料庫介面的應用程式庫方面,正確構造sql比較困難。

前文提到過,應用程式資料庫的技術與資料科學家無關,但是這一規則有一些例外。我的第一家公司實際上沒有像redshift那樣的分析資料庫,所以必須直接查詢應用程式的資料庫。更準確地說,是在查詢應用程式資料庫的讀副本。

該公司的應用程式還使用了no-sql資料庫redis,而且不止一次我需要直接從redis提取資料,所以確實需要學習redis的nosql api的一些元件。

因此,在主要應用程式專門使用nosql資料庫的環境中,學習哪種sql可能都無關緊要。但在非常罕見情況下,隨著公司的成長,他們幾乎肯定會投資建立乙個支援sql的分欄儲存分析資料庫。

我們一起分享ai學習與發展的乾貨

SQL語句詳解 MySQL update的正確用法

單錶的mysql update語句 update low priority ignore tbl name set col name1 expr1 col name2 expr2 where where definition order by limit row count 多表的updatebkg...

正宇,永遠的正宇

正宇,永遠的正宇 你是我今生的緣分和福報 當我走進正宇的隊伍中 我感到一種無比的榮耀和自豪 當我閱讀正宇公司的歷程時 我感到前所未有的震撼和驕傲 當我唱響正宇之歌的雄壯激昂 我禁不住熱血沸騰渾身充滿力量 當我仰望正宇標誌的簡練莊重 我看見嶄新的圖騰閃爍熠熠光芒 正宇,永遠的正宇 你是我今生的幸運和熱...

redis的淘汰策略

volatile lru 從已設定過期時間的資料集 server.db i expires 中挑選最近最少使用的資料淘汰。volatile ttl 從已設定過期時間的資料集 server.db i expires 中挑選將要過期的資料淘汰。volatile random 從已設定過期時間的資料集 s...