粉碎5個NoSQL流言:各司其職 NoSQL的出現比關係型更早

csdn發表於2013-09-06

  與許多流行詞一樣,NoSQL在大肆宣傳後,許多荒謬的觀點產生,本篇文章將揭穿其中廣被認同的5個。

  流言1:NoSQL是新鮮事物

  從根本上說,NoSQL資料庫系統的幾大屬性都不是出於關係模型,而關係模型首次揭露是在1970年 Codd釋出的文章中。

  那麼,這是否就意味著在1970年之前不存在任何其它的資料庫系統?不容爭論的是,這些資料庫卻是真實存在,比如CODASYL系統,它顯然不是關係型資料庫;基於其主要屬性,NoSQL的誕生其實明顯早於傳統關係型資料庫。

  流言2:遺棄資料結構模型

  從長遠上看,這個流言的影響更為惡劣。雖然許多NoSQL解決方案都不會強迫你使用嚴格的資料結構模型,但是絕對不意味它可以忽視。而在實際操作中也是恰恰相反的,隨著時間的流逝,你必須明白你為什麼要使用這些屬性。

  有些情況可能會更加危險,舉個MongoDB的例子:作為一個良好的實踐,許多經驗豐富的使用者都會建議去建立文件的屬性,在文件大小改變時,通過預分配大小去避免文件的完整拷貝。還有在查詢優化時,你必須要清楚你的結構模型以便做索引。

  流言3:NoSQL的擴充套件性永遠都是卓越的

  高擴充套件性是NoSQL的主要賣點之一,但是僅僅選擇一個NoSQL解決方案並不意味著擴充套件性問題的解決,真正解決問題的是優秀的架構。

  不錯,這裡確實存在通過選擇NoSQL讓系統擴充套件性得到了大幅度的提升。然而勝利的背後依稀可見的是資料結構的變化,在特定場景下使用正確的結構替換錯的。

  這個流言中有趣的地方是忽略了同樣提供優秀擴充套件性的關係型資料庫,不錯,使用NoSQL方案進行擴充套件確實非常容易,但是NoSQL的選擇絕對不是問題解決的唯一功臣。

  流言4:不公平的基準

  你如何才能公平的比較兩個完全不同的持久化方案,比如:鍵值、關係、文件等等。而當下許多NoSQL與關係型資料庫的對比也並不公平。

  當你的查詢只涉及一個鍵時,NoSQL資料庫的效能明顯要優於關係型資料庫。公平的基準應該建立在同型別產品的比較之上,類似MySQL與MongoDB的對比根本無任何意義。即使系統效能取得了巨大提升,也只是開始時使用了錯誤的資料結構模型而已。

  流言5:NoSQL可以大幅度的提高生產力

  這一點只發生在夢中,或者是開始選擇了錯誤的工具。在選擇NoSQL之前,我們已經使用了多年的關係型資料庫,這裡只存在團隊花大量精力去適應NoSQL的情況。

  很少人談及這一點, NoSQL採用最大的挑戰是文化,而不是技術。新事物之所以難以接受,是因為“老夥計”用起來很舒服,即使新事物更加得優秀。生產力源於實踐,而不是魔術。

  總結

  對比近年來研發領域發生的事件,NoSQL絕對可以稱得上最有意義之一;然而需要銘記的是,任何提升都需要付出同等的代價。

  原文連結: Some myths about NoSQL

相關文章