NoSQL

NoSQL全名 Not Only SQL,而非No SQL


NoSQL是伴隨着WEB2.0的興起而迅速發展,它的出現就是爲了解決大規模的非結構化數據的存儲,所以目前市面上的NoSQL都天生支持【集羣】和【數據分片】


這裏的天生支持是指使用內部機制實現,而非類似MySql的集羣和分片,需要使用插件MySQL Proxy來實現,所以在配置和使用上更加靈活以及穩定。


NoSQL的分類

1. 鍵值 Key/value (Redis,Membase)


鍵值數據庫爲了達到讀取的最大效率,所有的數據都是放在內存的,目鍵值數據庫多用於分佈式緩存的搭建。

這裏請注意:鍵值數據庫中的value不僅僅可以存儲基本數據類型,也可以存儲Collection,二進制文件等。


2. 文檔數據庫 (Mongodb)

Mongodb可算是文檔數據庫中的佼佼者,許多不瞭解的同學認爲NoSQL都很粗糙,其實不然。Mongodb支持對文檔的內部屬性進行索引,篩選,也支持分頁,全文搜索,基本上關係數據庫支持的Mongodb都支持,除了關聯查詢。


Mongodb支持地理位置的記錄和篩選,即記錄位置數據,可通過位置信息搜索附近的人.....類似微信的搖一搖搜索


3. 列數據庫(HBase)

列數據庫和傳統的關係數據庫存儲結構很接近,基於行和列可以定位單元格數據。相對於傳統數據庫的單元格數據,HBase是劃分列組,並且每個單元格數據支持歷史版本。

不僅僅如此,基於HBase還有Hadoop,MapReduce,Spark等一系列的成熟的大數據解決方案!


4. 圖數據庫 (Neo4J)

圖數據庫其實是記錄“關係數據”的。類似社交軟件的關係圖,例如用戶A 和 B 是[朋友][親人]關係,B和C是[戀人][同性]關係,通過Tag方式的關係,圖數據庫可以繪製出一張關係網,並且可以通過條件進行篩選。



NoSQL和關係數據庫(RDBMS)的關係

很多人認爲NoSQL和關係數據庫是此消彼長的關係,這是錯誤的概念。關係數據庫在存儲結構化數據和事務方面是不可替代的。而且關係數據庫歷史悠久,在很多行業都是穩定可靠的解決方案。


NoSQL處在一個爆發期,穩定性上遠遠不及RDBMS,而且由於缺乏較好的事務支持,很多行業(比如財務)並不能適用。


NoSQL完全摒棄了數據之間的關係,不支持關聯查詢,這在一些企業應用中,也是不能忍受的。


目前NoSQL的地位

國內大多數的互聯網公司,也只是小範圍的試用NoSQL,或者使用NoSQL作爲輔助,並沒有成爲主流。比如,淘寶使用MySQL集羣來實現其主業務,只是搭配Memcache作爲分佈式緩存。


雖然NoSQL一定會成爲互聯網的主流,但是一定會有一個較長的過渡期。


企業應用和NoSQL

傳統的企業應用都有規範的數據結構,更要求有完善的事務支持,而且數據量都不會太大,所以使用NoSQL反而得不償失。


我上面特別強調“傳統的企業應用”,是因爲針對企業的數據都不會太大,對性能要求是最低的。但是如果你開發類似於“物聯網”這類的企業平臺,使用NoSQL是勢在必行。



即使你的定位不是物聯網級別的平臺,也可以搭配鍵值數據庫作爲緩存服務器使用,NoSQL天生的集羣特性,一旦搭建起來,就不單單是“緩存服務器”了,而是“分佈式緩存”!!讓你的平臺分分鐘變得“高大上”!













版權聲明:本文爲博主原創文章,未經博主允許不得轉載。

發佈了43 篇原創文章 · 獲贊 17 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章