NoSQL的是與否
To NoSQL or not toNoSQL
隨著大量資料的出現,NoSQL資料庫結構描述正在被越來越多的人所使用,因為NoSQL架構對於大資料的處理上面更為有效。
如今,當你需要儲存和處理高容量的資料時,許多的年輕開發人員更傾向於選擇開源的NoSQL。他們宣稱NoSQL才是屬於未來的資料庫結構描述,甚至於一些矽谷的創業企業認為傳統的關係型資料庫已經沒有存在的意義了。
與此同時,有經驗的DBA和開發人員卻提出了一個值得注意的例子:由於NoSQL的弱點,駭客利用這些弱點成功進入了系統,導致了Flexcoin和Poloniex這兩家比特幣交易公司的失敗。甚至還有堅持擁護RDBMS的人認為,NoSQL根本就不適合任何關鍵應用(missioncritical)的開發。
當然,事實的真相肯定就在這兩極觀點的中間,兩種架構都有他們的獨特特性和適合的情境,所以這兩者應該是共存的。與其把特性發揮到極致,先專心處理實際應用所需的資料準確度顯然更為有用,尤其是當不一致的資料遇到低容忍性的環境時。電子商務、金融、航運、物流和製造業都是這樣的,對於這些產業,“最終一致性”並不能完全滿足他們的需求,不一致的資料庫可能會讓業務變得很糟糕。
對於關鍵任務的開發,管理員需要即時的一致性而非“最終一致”,這才能保證資料可以立即使用並且在應用中保持一致,而不需要等到應用的操作結束之後。為了能實現這種層級的安全防護,開發人員需要資料庫對於每個事務都具有ACID特性。最終一致性不能滿足這些行業的需求,只有完全的ACID資料庫才能解決,因為有ACID特性,每一個事務的操作才是可靠的、一致的,同時ACID特性也保重資料的一致性不會受到運行事故或者是外界幹擾的影響。
而與此同時,一些流行的開源NoSQL資料庫,如MongoDB和Cassandra,它們更容易搭建也可以很快的編寫和部署應用。他們的快速也吸引了許多爭分奪秒搶奪市場的公司。如今,這些資料庫還提出了對應於ACID的新的概念BASE(基本可用性、軟狀態、最終一致)。
雖然流行的NoSQL資料庫結構描述不都支援ACID的特性,一些NoSQL的整合實現卻可以。這些整合實現甚至能實現關鍵性任務所需要的即時一致性的ACID特性。事實上,已經有一些金融服務企業正在採用具有即時一致性的NoSQL資料庫,在嚴格管理的環境下來支援他們每秒數以百萬計的金融事務。
有許多的線上零售商這樣的商家,他們需要即時一致性的ACID支援,可是他們也需要能快速處理比如使用者反饋一類的資料,這些資料不需要特彆強的ACID支援,最終一致性就可以滿足處理的需求了。
對於那些堅決使用NoSQL或者SQL的任何一方,不管怎麼樣,他們都要認識到SQL架構在金融應用中確實有它適合的情境,比如分析一個標準格式的報表。
所以,對於需要短時間處理大量的資料、拓展的彈效能力,也需要即時的準確性的那些關鍵任務性應用,那麼他們應該選擇帶有即時一致性ACID支援的NoSQL資料庫。
對於那些不需要即時資料一致性,比如社交網路內容和其他只需要保證最終一致性就可以滿足的情境,支援BASE的NoSQL就足夠滿足需求了。
而對於需要深度分析、報告等嚴苛商務操作的情境,還是傳統的SQL最能勝任。
最後,現在有許多的資料庫客供大家選擇,甚至有的可以提供同樣資料集NoSQL和SQL混合使用的技術。面對這些種種選擇,還是需要考慮實際應用情境再做選擇,SQL和NoSQL都有各自的優點和不足,只有把他們使用到了最適合的情境之中,才能發揮他們最大的作用!
《NoSQL資料庫入門》,高清PDF 版下載見
NoSQL資料庫的基礎知識
公司專屬應用程式NoSQL的關鍵
本文永久更新連結地址: