1. 程式人生 > >SQL和NOSQL有區別嗎?

SQL和NOSQL有區別嗎?

在大資料高速發展的今天,資料量在不斷的增加,傳統的資料庫可能不能滿足人們的需求了,這個時候新霸哥注意到了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最重要的還是能夠根據實際的情況來選擇,這樣才能夠充分的利用資源。愛好大資料的朋友可以關注新霸哥。