傳統「關係型數據庫」在應付互聯網WEB2.0應用已顯示的力不從心,由其是超大規模和高併發的SNS類型的WEB2.0網站。主要須要應對如下三方面難題:數據庫
一、對數據庫高併發讀寫的要求。json
二、對數據庫高可擴展性和高可用性的要求。併發
三、對海量數據高效存儲和訪問的要求。分佈式
」關係型數據庫「固有的特性的確用處不大高併發
一、對數據庫事務一致性要求低。不少WEB應用不要求嚴格的數據庫事務,有些對讀一致性要求不高,更有些對寫一致性也要求不高。性能
二、對數據庫寫實時性和讀實時性要求低。如發送消息給訂閱者,能夠接受延遲。網站
三、對複雜SQL查詢的要求低。如很是忌諱多張大表關聯查詢。spa
爲了解決以上問題,」非關係型數據庫「(NoSql -- not only SQL)應運而生,再很短的時間內涌現出衆多的NoSQL產品。他們各有各的適用場景,你是否對這些特性有所瞭解?你是否在選型時一片茫然? 本文將解答你的疑惑,幫助你選擇正確的NoSQL產品,讓你少走些彎路。設計
NoSQL數據庫分類:xml
一、key-value存儲型--知足極高讀寫要求。
二、文檔存儲型--海量存儲和訪問的數據庫。
三、列存儲型--高可擴展性,可用性,面向分佈式計算的數據庫。
四、圖存儲型--適合存儲關係
類型 |
部分表明 |
特色 |
列存儲 |
Hbase Cassandra Hypertable |
顧名思義,是按列存儲數據的。最大的特色是方便存儲結構化和半結構化數據,方便作數據壓縮,對針對某一列或者某幾列的查詢有很是大的IO優點。 |
文檔存儲 |
MongoDB CouchDB |
文檔存儲通常用相似json的格式存儲,存儲的內容是文檔型的。這樣也就有有機會對某些字段創建索引,實現關係數據庫的某些功能。 |
key-value存儲 |
Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis |
能夠經過key快速查詢到其value。通常來講,存儲無論value的格式,照單全收。(Redis包含了其餘功能) |
圖存儲 |
Neo4J FlockDB InfoGrid |
圖形關係的最佳存儲。使用傳統關係數據庫來解決的話性能低下,並且設計使用不方便。 |
對象存儲 |
db4o Versant |
經過相似面嚮對象語言的語法操做數據庫,經過對象的方式存取數據。 |
xml數據庫 |
Berkeley DB XML BaseX |
高效的存儲XML數據,並支持XML的內部查詢語法,好比XQuery,Xpath。 |