關係型數據庫和非關係型數據庫的區…

作者:Homunculus
鏈接:http://www.zhihu.com/question/24225007/answer/81664513

關係型數據庫只是數據庫的一個特例,類型有嚴格的限制。科學家們用形式化定義了關係以及各種運算,讓它們看起來高大上,但是沒什麼卵用。然後又製造出各種範式包括白癡NF來簡化數據庫,殊不知不用關係型即可提高效率。然後就有了所謂的Nosql,其實這是一種復古。或許人們以後就會發現純粹的KV存儲也有不能滿足的需求而製造其他存儲方式吧。

非關係型數據庫的優勢:
1. 性能
NOSQL是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以性能非常高。
2. 可擴展性
同樣也是因爲基於鍵值對,數據之間沒有耦合性,所以非常容易水平擴展。

關係型數據庫的優勢:
1. 複雜查詢
可以用SQL語句方便的在一個表以及多個表之間做非常複雜的數據查詢。
2. 事務支持
使得對於安全性能很高的數據訪問要求得以實現。

對於這兩類數據庫,對方的優勢就是自己的弱勢,反之亦然。

但是近年來這兩種數據庫都在向着另外一個方向進化。例如:
NOSQL數據庫慢慢開始具備SQL數據庫的一些複雜查詢功能的雛形,比如Couchbase的index以及MONGO的複雜查詢。對於事務的支持也可以用一些系統級的原子操作來實現例如樂觀鎖之類的方法來曲線救國。
SQL數據庫也開始慢慢進化,比如HandlerSocker技術的實現,可以在MYSQL上實現對於SQL層的穿透,用NOSQL的方式訪問數據庫,性能可以上可以達到甚至超越NOSQL數據庫。可擴展性上例如PerconaServer,可以實現無中心化的集羣。

雖然這兩極都因爲各自的弱勢而開始進化出另一極的一些特性,但是這些特性的增加也會消弱其本來具備的優勢,比如Couchbase上的index的增加會逐步降低數據庫的讀寫性能。所以怎樣構建系統的短期和長期存儲策略,用好他們各自的強項是架構師需要好好考慮的重要問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章