挑戰(zhàn)大數(shù)據(jù) 淺析NoSQL技術(shù)
原創(chuàng)【51CTO專稿】目前我們都生活在一個龐大的數(shù)據(jù)存數(shù)時代,然而大數(shù)據(jù)及其底層技術(shù)NoSQL也正成為了互聯(lián)網(wǎng)的一個流行語。對于谷歌以及Facebook,IBM這樣的全球互聯(lián)網(wǎng)企業(yè),NoSQL這種高擴展的非關(guān)系型數(shù)據(jù)庫存數(shù)的使用往往已經(jīng)超過關(guān)系型數(shù)據(jù)庫。事實上,在海量數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)的一些問題過程中,已經(jīng)誕生了一系列新型數(shù)據(jù)庫產(chǎn)品,而這些數(shù)據(jù)庫我們稱之為NoSQL。
2013年4月26日-27日,由51CTO傳媒集團旗下WOT(World Of Tech)品牌主辦的2013大數(shù)據(jù)全球技術(shù)峰會在北京富力萬麗酒店召開。NoSQL產(chǎn)品千變?nèi)f化,特性和價值主張各有不同,因此常常難以選擇。記者深入與來自硅谷的軟件開發(fā)專家,層任職于Oracle,Microsoft和Google的Ming Lei老師溝通以及對NoSQL的實際分析,總結(jié)一些觀點給網(wǎng)友參考。
Ming Lei老師(左)
分布式系統(tǒng)和NoSQL
一個分布式系統(tǒng)包括很多不同的層面,它包括應(yīng)用層,數(shù)據(jù)層,表現(xiàn)層等等,現(xiàn)在主要說說應(yīng)用層和數(shù)據(jù)層,這兩個都是分布式系統(tǒng)重要的組成部分,應(yīng)用層一般來說是沒有狀態(tài),數(shù)據(jù)層是不斷的做運算讓它保存狀態(tài)。數(shù)據(jù)層是分布式系統(tǒng)里面最困難,也是***深的一個層面。
Ming Lei老師的觀點是NoSQL是分布式系統(tǒng)里面的一個存儲器,它是分布式系統(tǒng)的一種?;蛘哒f是分布式系統(tǒng)的一個層面。
NoSQL緩存對CDN緩存比較
在NoSQL這邊緩存的代表性是Memcached,NoSQL的緩存和CDN的緩存***的區(qū)別在于NoSQL的緩存是指在數(shù)據(jù)層的緩存,并不是應(yīng)用層的緩存,也不是網(wǎng)絡(luò)層的緩存,所以它的緩存是比較原始的數(shù)據(jù)。比方說這個應(yīng)用邏輯里面的事務(wù),并不是最終給用戶看的結(jié)果,那么我們在網(wǎng)絡(luò)這一層做緩存的話,最常見的技術(shù)叫CDN,它的英文叫做ContentDeliveryNetwork,它一般是在網(wǎng)絡(luò)的末端靠近用戶的那一端的一些網(wǎng)絡(luò)服務(wù)器上緩存一些具體的網(wǎng)頁。
Memcached:
- Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
- Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
MemCache – Architecture
- Sharding in client code to select server.
- Peer-to-Peer Server instances.
- Server uses in-mem storage.
- Potentially expand to persistent store.
MemCache – Usage Characteristics
- Object-level Consistency, Isolation and Atomicity.
- No persistent storage
- No replication for load-balancing or failover
- Consistency + Partition-tolerance in CAP
NoSQL安全性分析
其實系統(tǒng)可以在不同的層面去解決安全性的問題,不一定要求系統(tǒng)每個層面都要去解決安全性的問題,比方說分布式存儲系統(tǒng),它一般是個存儲服務(wù),從請求拿到結(jié)果,所以必然有一個遠程網(wǎng)絡(luò)調(diào)用,一個比較有利的解決方案是在網(wǎng)絡(luò)調(diào)用這塊解決安全性的問題,比如加上一些安全性的管理(用戶授權(quán),用戶登陸),而不是在分布式存儲運算里面去解決這個問題。
Hadoop多維分析平臺架構(gòu)圖
NoSQL and SQL
在Ming Lei老師看來其實是兩者的應(yīng)用場景不一樣。當我們針對的是互聯(lián)網(wǎng)的用戶,消費者,這樣的應(yīng)用根據(jù)我們的經(jīng)驗是它對事務(wù)的要求較為低,而企業(yè)應(yīng)用它對事務(wù)的要求很高,比如說一個企業(yè)里面的財會,物流,人事,它往往都是公用同樣的一套數(shù)據(jù)庫,所以它對事務(wù)的要求會比較高。
比如說你把一個網(wǎng)站建在服務(wù)上面,這個時候你的事務(wù)的這個層面可能只是說一個賬戶,也就是說你對數(shù)據(jù)庫的要求低,同時你的數(shù)據(jù)量又非常大,這個時候我們需要一種不同關(guān)系型數(shù)據(jù)庫的解決方案,這種解決方案就叫做NoSQL。它***的區(qū)別在于要求的數(shù)據(jù)量大,對事物的要求低。
NoSQL數(shù)據(jù)庫的對比圖(點擊擴大)
NoSQL未來
我覺得目前在互聯(lián)網(wǎng)上比較多見的應(yīng)用場景是,數(shù)據(jù)量特別大,對事務(wù)的要求相對低,或者事務(wù)的層面比較窄,結(jié)構(gòu)比較小。對這樣一些應(yīng)用NoSQL是未來的一個發(fā)展方向。
但是,有些企業(yè)級的應(yīng)用還是必須得使用關(guān)系型數(shù)據(jù)庫,目前在工業(yè)這一塊還沒有這樣的一個趨勢去把企業(yè)應(yīng)用的關(guān)系型數(shù)據(jù)庫變成NoSQL。