挑戰(zhàn)大數(shù)據(jù) 淺析NoSQL技術(shù)
原創(chuàng)【51CTO專稿】目前我們都生活在一個(gè)龐大的數(shù)據(jù)存數(shù)時(shí)代,然而大數(shù)據(jù)及其底層技術(shù)NoSQL也正成為了互聯(lián)網(wǎng)的一個(gè)流行語(yǔ)。對(duì)于谷歌以及Facebook,IBM這樣的全球互聯(lián)網(wǎng)企業(yè),NoSQL這種高擴(kuò)展的非關(guān)系型數(shù)據(jù)庫(kù)存數(shù)的使用往往已經(jīng)超過(guò)關(guān)系型數(shù)據(jù)庫(kù)。事實(shí)上,在海量數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)的一些問(wèn)題過(guò)程中,已經(jīng)誕生了一系列新型數(shù)據(jù)庫(kù)產(chǎn)品,而這些數(shù)據(jù)庫(kù)我們稱之為NoSQL。
2013年4月26日-27日,由51CTO傳媒集團(tuán)旗下WOT(World Of Tech)品牌主辦的2013大數(shù)據(jù)全球技術(shù)峰會(huì)在北京富力萬(wàn)麗酒店召開(kāi)。NoSQL產(chǎn)品千變?nèi)f化,特性和價(jià)值主張各有不同,因此常常難以選擇。記者深入與來(lái)自硅谷的軟件開(kāi)發(fā)專家,層任職于Oracle,Microsoft和Google的Ming Lei老師溝通以及對(duì)NoSQL的實(shí)際分析,總結(jié)一些觀點(diǎn)給網(wǎng)友參考。
Ming Lei老師(左)
分布式系統(tǒng)和NoSQL
一個(gè)分布式系統(tǒng)包括很多不同的層面,它包括應(yīng)用層,數(shù)據(jù)層,表現(xiàn)層等等,現(xiàn)在主要說(shuō)說(shuō)應(yīng)用層和數(shù)據(jù)層,這兩個(gè)都是分布式系統(tǒng)重要的組成部分,應(yīng)用層一般來(lái)說(shuō)是沒(méi)有狀態(tài),數(shù)據(jù)層是不斷的做運(yùn)算讓它保存狀態(tài)。數(shù)據(jù)層是分布式系統(tǒng)里面最困難,也是***深的一個(gè)層面。
Ming Lei老師的觀點(diǎn)是NoSQL是分布式系統(tǒng)里面的一個(gè)存儲(chǔ)器,它是分布式系統(tǒng)的一種?;蛘哒f(shuō)是分布式系統(tǒng)的一個(gè)層面。
NoSQL緩存對(duì)CDN緩存比較
在NoSQL這邊緩存的代表性是Memcached,NoSQL的緩存和CDN的緩存***的區(qū)別在于NoSQL的緩存是指在數(shù)據(jù)層的緩存,并不是應(yīng)用層的緩存,也不是網(wǎng)絡(luò)層的緩存,所以它的緩存是比較原始的數(shù)據(jù)。比方說(shuō)這個(gè)應(yīng)用邏輯里面的事務(wù),并不是最終給用戶看的結(jié)果,那么我們?cè)诰W(wǎng)絡(luò)這一層做緩存的話,最常見(jiàn)的技術(shù)叫CDN,它的英文叫做ContentDeliveryNetwork,它一般是在網(wǎng)絡(luò)的末端靠近用戶的那一端的一些網(wǎng)絡(luò)服務(wù)器上緩存一些具體的網(wǎng)頁(yè)。
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安全性分析
其實(shí)系統(tǒng)可以在不同的層面去解決安全性的問(wèn)題,不一定要求系統(tǒng)每個(gè)層面都要去解決安全性的問(wèn)題,比方說(shuō)分布式存儲(chǔ)系統(tǒng),它一般是個(gè)存儲(chǔ)服務(wù),從請(qǐng)求拿到結(jié)果,所以必然有一個(gè)遠(yuǎn)程網(wǎng)絡(luò)調(diào)用,一個(gè)比較有利的解決方案是在網(wǎng)絡(luò)調(diào)用這塊解決安全性的問(wèn)題,比如加上一些安全性的管理(用戶授權(quán),用戶登陸),而不是在分布式存儲(chǔ)運(yùn)算里面去解決這個(gè)問(wèn)題。
Hadoop多維分析平臺(tái)架構(gòu)圖
NoSQL and SQL
在Ming Lei老師看來(lái)其實(shí)是兩者的應(yīng)用場(chǎng)景不一樣。當(dāng)我們針對(duì)的是互聯(lián)網(wǎng)的用戶,消費(fèi)者,這樣的應(yīng)用根據(jù)我們的經(jīng)驗(yàn)是它對(duì)事務(wù)的要求較為低,而企業(yè)應(yīng)用它對(duì)事務(wù)的要求很高,比如說(shuō)一個(gè)企業(yè)里面的財(cái)會(huì),物流,人事,它往往都是公用同樣的一套數(shù)據(jù)庫(kù),所以它對(duì)事務(wù)的要求會(huì)比較高。
比如說(shuō)你把一個(gè)網(wǎng)站建在服務(wù)上面,這個(gè)時(shí)候你的事務(wù)的這個(gè)層面可能只是說(shuō)一個(gè)賬戶,也就是說(shuō)你對(duì)數(shù)據(jù)庫(kù)的要求低,同時(shí)你的數(shù)據(jù)量又非常大,這個(gè)時(shí)候我們需要一種不同關(guān)系型數(shù)據(jù)庫(kù)的解決方案,這種解決方案就叫做NoSQL。它***的區(qū)別在于要求的數(shù)據(jù)量大,對(duì)事物的要求低。
NoSQL數(shù)據(jù)庫(kù)的對(duì)比圖(點(diǎn)擊擴(kuò)大)
NoSQL未來(lái)
我覺(jué)得目前在互聯(lián)網(wǎng)上比較多見(jiàn)的應(yīng)用場(chǎng)景是,數(shù)據(jù)量特別大,對(duì)事務(wù)的要求相對(duì)低,或者事務(wù)的層面比較窄,結(jié)構(gòu)比較小。對(duì)這樣一些應(yīng)用NoSQL是未來(lái)的一個(gè)發(fā)展方向。
但是,有些企業(yè)級(jí)的應(yīng)用還是必須得使用關(guān)系型數(shù)據(jù)庫(kù),目前在工業(yè)這一塊還沒(méi)有這樣的一個(gè)趨勢(shì)去把企業(yè)應(yīng)用的關(guān)系型數(shù)據(jù)庫(kù)變成NoSQL。