激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL必須消失的九個理由,你認可嗎?

SQL必須消失的九個理由,你認可嗎?

2023-12-19 07:00未知服務器之家 Sql Server

譯者 | 晶顏 審校 | 重樓 考慮到 SQL的流行和成功, 本文更像 是一個悖論研究。SQL可能笨拙而冗長,但開發人員經常發現它是提取所需數據的最簡單、最直接的方法。當查詢寫入正確時,它可以像閃電一樣快,而當查詢出錯時,它

譯者 | 晶顏

審校 | 重樓

考慮到SQL的流行和成功,本文更像是一個悖論研究。SQL可能笨拙而冗長,但開發人員經常發現它是提取所需數據的最簡單、最直接的方法。當查詢寫入正確時,它可以像閃電一樣快,而當查詢出錯時,它又會得驚人。它已經存在了幾十年,但新功能一直在不斷增加。

SQL必須消失的九個理由,你認可嗎?

這些矛盾并不重要,因為市場已經表明SQL是許多人的首選,即使有更新的、更強大的選項。從最小的網站到最大的大型公司,各地的開發人員都知道SQL。他們依靠它來組織所有的數據。

SQL的表格模型如此流行,以至于許多非SQL項目最終都添加了SQLish接口,因為用戶需要它。甚至是“NoSQL運動——其發明是為了擺脫舊的范式——最終似乎也敗給了SQL。

SQL的局限性可能不足以將其徹底拋棄。開發人員可能永遠不會著手將所有數據從SQL中遷移出去。但是SQL的問題是真實存在的,足以給開發人員帶來壓力,增加延遲,甚至需要對某些項目進行重新設計。

下面是我們希望放棄SQL的9個原因,盡管我們知道可能做不到。

表格不能擴展

關系模型鐘情于表格,所以我們一直在構建。這對于小型甚至正常大小的數據庫來說還好,面對真正的大規模數據庫,這個模型就會崩潰。

有些人試圖通過將新舊結合起來來解決問題,比如將分片集成到舊的開源數據庫中。添加層似乎可以使數據更易于管理,并提供無限的規模。但這些增加的層可能隱藏危險。根據分片中存儲的數據量,SELECT或JOIN的處理時間可能會有很大的不同。

分片還迫使數據庫管理員(DBA考慮數據可能存儲在不同的機器上,甚至可能存儲在不同的地理位置上的可能性。沒有經驗的管理員在開始跨表搜索時,如果沒有意識到數據存儲在不同的位置,可能會感到困惑。模型有時會將位置從視圖中抽象出來。

一些AWS機器配備了24TB的RAM因為一些數據庫用戶需要這么多。他們在SQL數據庫中有這么多數據,而且這樣能夠運行得更好。

SQL不是JSON或XML原生的

SQL可能是一種常青樹式”的語言,但它并不特別適合JSON、YAML和XML等較新的數據交換格式。所有這些都支持比SQL更分層、更靈活的格式。SQL數據庫的核心仍然停留在關系模型中,充斥著各種表格

市場會想方設法掩蓋這種常見的抱怨。使用正確的粘合代碼添加不同的數據格式如JSON相對容易,但您將付出損失時間的代價。

一些SQL數據庫現在能夠編碼和解碼更現代的數據格式如JSON、XML、GraphQL或YAML作為原生特性。但是在內部,數據通常使用相同的舊表格模型進行存儲和索引。

在這些格式之間轉換數據要花費多少時間用一種更現代的方式存儲數據不是更容易嗎一些聰明的數據庫開發人員仍在繼續進行實驗,但奇怪的是,他們經常會使用某種SQL解析器。

封送(Marshaling)是一項耗費大量時間的工作

數據庫可以在表中存儲數據,但是需要程序員編寫處理對象的代碼。設計數據驅動的應用程序的大部分工作似乎都是找出從數據庫中提取數據并將其轉換為業務邏輯可以處理的對象的最佳方法。然后,必須通過將對象中的數據字段轉換為SQL upsert來解組數據。難道沒有一種方法可以讓數據保持一種隨時可用的格式嗎

SQL并非實時的

最初的SQL數據庫是為批處理分析和交互模式而設計的。具有長處理管道的流數據模型是一個相對較新的想法,而且它并不完全匹配。

主要的SQL數據庫是在幾十年前設計的,當時的模型設想數據庫可以獨立運行,像某種Oracle一樣回答查詢。有時們反應迅速,有時則不然。這就是批處理的工作方式。

一些最新的應用程序要求更好的實時性能——不僅僅是為了方便,而且因為應用程序需要它。在現代的流媒體世界里,缺乏實時功能是行不通的。

為這些市場設計的最新數據庫非常重視速度和響應能力。它們不提供那種復雜的SQL查詢,以免造成延遲

JOIN是一個令人頭疼的問題

關系數據庫的強大之處在于將數據分解成更小、更簡潔的表。不過,問題也隨之而來

使用JOIN動態地重新組裝數據通常是作業中計算成本最高的部分,因為數據庫必須處理所有數據。當數據開始超出RAM時,問題就開始了。

對于學習SQL的人來說,JOIN可能會讓人十分困惑。弄清楚內部JOIN和外部JOIN之間的區別僅僅是個開始。尋找將多個JOIN連接在一起的最佳方式更為困難。內部優化器可能會幫上忙,但是當數據庫管理員要求一個特別復雜的組合時,它們就無能為力了。

列(Column)是對空間的浪費

NoSQL”運動的一個偉大思想就是讓用戶從列中解脫出來。如果有人想向條目添加新值,他們可以選擇他們想要的任何標記或名稱。不需要更新模式來添加新列。

SQL捍衛者在該模型中只看到混亂。他們喜歡表自帶的順序,不希望開發人員匆忙添加新字段。他們有一定的道理,但是添加新列可能非常昂貴和耗時,特別是在大型表中。將新數據放在單獨的列中并使用JOIN對它們進行匹配會增加更多的時間成本和復雜性。

優化器并非始終有用

數據庫公司和研究人員已經花費了大量時間開發優秀的優化器,這些優化器可以分解查詢并找到排序其操作的最佳方式。

收益可能是顯著的,但是優化器所能做的是有限的。如果查詢需要一個特別大的或細致的響應,那么優化器不能只是說,你真的確定嗎?”它必須把答案集合起來,然后按照指令去做。

有些數據庫管理員只有在應用程序開始擴展時才意識到這一點。早期的優化足以在開發期間處理測試數據集。但是在關鍵時刻,優化器無法發揮更多的功能

反范式化(Denormalization)將表視為垃圾

面對想要更快性能的用戶和不想為更大、更昂貴的硬件付費的用戶,開發人員經常處于兩難境地。一種常見的解決方案是對表進行反范式處理,這樣就不需要復雜的JOIN或跨表操作。

并非一個糟糕的技術解決方案,而且它經常獲勝,因為磁盤空間已經變得比處理能力便宜。但是反范式化也拋棄了SQL和關系數據庫理論中最精華的部分。當數據庫變成一個長CSV文件時,所有這些花哨的數據庫功能幾乎都消失了。

附加特性會破壞數據庫

多年來,開發人員一直在為SQL添加新特性,其中一些非常優秀另一方面,有些新特性可能會導致性能問題。一些開發人員警告您應該特別小心子查詢(Subqueries),因為它們會減慢所有操作的速度。另一些人則表示選擇像公共表表達式、視圖或Windows這樣的子集會使代碼過于復雜

例如,窗口函數(Window function)的設計是為了通過加速計算結果如平均值來加快基本數據分析的速度。但是許多SQL用戶會發現并使用一些附加的特性。在大多數情況下,他們會嘗試新功能,只有當他們的機器慢得像爬行一樣時才會注意到這些問題。然后他們會需要一些經驗豐富數據庫管理員來解釋發生了什么以及如何修復它。

原文標題:9 reasons SQL has got to go,作者:Peter Wayner


延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日日天日日夜日日摸 | 亚洲一区二区免费视频 | 国产亚洲综合精品 | 韩国精品视频在线观看 | 深夜视频福利 | 一区二区三区四区国产精品视频 | 国产精品久久久久久久午夜片 | 久久亚洲精品久久国产一区二区 | 亚欧美一区二区 | 精品一区二区三区电影 | 一级免费| 亚洲午夜1000理论片aa | 久久久综合 | 久久国产一级 | 精品国产91久久久久久久妲己 | 久久精品2019中文字幕 | 国产一区二区三区在线免费 | 国产精品美女久久久久久网站 | 日本韩国欧美一级片 | av在线免费看网站 | 舌头伸进添的我好爽高潮网站 | 毛片av网| 欧美黄 片免费观看 | 91青青 | 久久2019中文字幕 | 在线日韩av电影 | 毛片小网站| 中文字幕免费看 | 圆产精品久久久久久久久久久 | 免费观看国产视频 | 欧美a在线播放 | 91社| 国内精品视频饥渴少妇在线播放 | 99riav国产在线观看 | 国产一区影院 | 夜夜夜精品视频 | 久久久免费电影 | xnxx 日本19| 欧美雌雄另类xxxxx | 亚洲网在线 | 色阁阁69婷婷 |