在大數據高速發展的今天,數據量在不斷的增加,傳統的數據庫可能不能滿足人們的需求了,這個時候新霸哥注意到了NOSQL出現了可以解決這個問題。我們知道sql數據庫可以存儲數據和處理數據,但是NOSQL最大的一個優勢就是在大數據這方面,能夠深度處理大數據,分析數據,從大量的數據中獲取有用的資源。
新霸哥發現關系型數據庫本身基於關系代數的數學理論,是很好的抽象,但是nosql的抽象沒有太多的數學基礎,數學總是不會過時的。從計算機本身來說,關系型數據庫的存儲也是隨着機械硬盤的興起而發展的,關系型數據庫對數據塊的處理,比現在最流行的nosql強很多,而且由於約束的存在,存儲效率很高,根本不是那些nosql能比的。這一點新霸哥很佩服。
在雲計算高速發展的今天,雲計算兼具SQL和NoSQL數據庫的益處。雲環境中的關系型存儲通常是以服務形式提供的,是可復制、高可用性且分布式的,極大地提高了橫向擴展能力。同時托管於雲服務中的NoSQL數據庫也天然享有自動分片的好處,能夠階段性地靈活彈性處理,集成高速緩存和巨大的計算能力來捕獲、存儲和分析大數據。
數據量很少的情況下,就不用考慮性能了,分布式什么都不用考慮了,新霸哥也注意到了NoSQL在這種情況下最大的劣勢就是沒有schema。
NoSQL不會取代RDBMS,可能很多人會有疑問,RDBMS比如說MySQL通過sharding可以做到NoSQL所能做的一切,除此之外RDBMS有schema(也可以設計成schemaless),支持SQL,健壯的ACID。一般來說,現在的RDBMS完全可以做NoSQL所有可以做的事情,反過來就不是這樣了。舉個非常形象的例子,要在MySQL上加一層key-value接口不難,如果要在任何NoSQL上加能和MySQL匹敵的Query Optimizer和Transaction support不是件簡單的事情。
NoSQL想解決的問題RDBMS都能解決,它的理念會被融入到RDBMS中,其實在實際應用中真正適合NoSQL應用的場景只是cache。
新霸哥發現SQL數據庫大多數比較昂貴,但是NoSQL數據庫通常都是開源的。事實上,兩種類型數據庫都有開源的和商業的。常見的SQL 數據庫有微軟公司的SQL Server,MySQL,SQLite,Oracle和PostGres。現在非常流行的NoSQL數據庫有Couchbase,MongoDB,Redis,BigTable和RavenDB。這也是現在比較主流的數據存儲方式。
其實無論是SQL還是NOSQL最重要的還是能夠根據實際的情況來選擇,這樣才能夠充分的利用資源。愛好大數據的朋友可以關注新霸哥。