單表關係型數據庫是否類似於簡單的 NoSQL 數據庫?
NoSQL 數據庫吹捧的一個優勢是缺少模式。在單表關係型數據庫的情況下,多表之間沒有關係,單表可以很方便的添加新列。看起來它和 NoSQL 數據庫一樣好,因為不需要設計模式。那麼,單表關係型數據庫是不是類似於簡單的 NoSQL 數據庫呢?
如果像 SQLite 這樣的關係數據庫經過更好的測試並且可能更穩定,那麼如果單表關係數據庫足夠好,是否有充分的理由使用 NoSQL 數據庫?
否 - 單表關係數據庫比 NoSQL 數據庫更類似於電子表格。NoSQL 不是沒有模式,它更多的是關於擁有靈活的模式!
Wikipedia
當它說 NoSQL 時說得很好:提供了一種儲存和檢索數據的機制,該機制以關係數據庫中使用的表格關係以外的方式建模。
這裡的關鍵(請原諒雙關語)詞是
modeled
- 即有一個模型,它只是不是一個關係模型!順便說一句,整篇文章非常值得一讀——它詳細而且寫得很好!
IBM
說:需要強調的是,“NoSQL”中的“No”是“not only”的縮寫,而不是真正的“No”。這種區別很重要,不僅因為許多 NoSQL 數據庫支持類似 SQL 的查詢,而且因為在微服務和多語言持久性的世界中,NoSQL 和關係數據庫現在通常在單個應用程序中一起使用。
事實上,許多 NoSQL 系統(很難說“供應商”,因為其中許多系統都是開源的)正在爭先恐後(或已經爭先恐後)將 SQL 介面放在他們的系統之上,因為很多程序員都熟悉這種範式(而且它是多年來一直運作良好的一種)。
一個人可以寫出關於 NoSQL 與經典 RDBMS 的整篇文章(就像我在大學時所做的那樣),除了敦促您閱讀該主題外,我不會在這條道路上走得更遠。
觀察數據庫生態圈的演變——新的 SSD 晶片技術是一件很有趣的事情,對我來說,最有趣的發展是最近對 LSM(
Log Structured Merge tree
)的關注,它被廣泛用於 NoSQL 系統以及NewSQL ones
. 恕我直言,這些 NewSQL 系統是未來的發展方向,我希望看到 Oracle、SQL Server 等。採用他們的許多範式(或embrace and extend
他們創造一個片語)。同樣,它是一項複雜的技術,可以寫入哪些令,但來自
here
:LSM 算法的核心是滾動合併過程:…. LSM 樹會隨著時間的推移將數據從較小、性能較高(但成本更高)的儲存級聯到性能較差(且成本較低)的較大儲存。
數據不是就地更新,而是“分塊”並來自
here
:一旦記憶體樹達到門檻值大小,就會創建一個新的記憶體樹並將舊樹同步到磁碟。一旦寫入磁碟,樹是只讀的,儘管它們在後台與其他磁碟樹合併以降低讀取成本。
你在你的問題中提到了 SQLite——你可能會驚訝地發現(它讓我知道)有一個
Key-Value "version"
SQLite 是在 2012 年和 2014 年之間開發的。來自here
:從 SQLite4 中吸取的經驗教訓已被納入 SQLite3,繼續積極維護和開發。該儲存庫作為歷史記錄存在。目前沒有恢復 SQLite4 開發的計劃。
我將把最後一句話留給
Brian Aker
MySQL 的前架構總監,他介紹了他對 NoSQL 的有趣看法,該 NoSQL 可在 YouTube 上找到here
。我認為他的觀點可以用他在那次演講中展示的一幅漫畫來最好地概括:+1 提出一個有趣的問題(我希望不會被關閉!),歡迎來到論壇!