挑戰大數據 淺析NoSQL技術
目前我們都生活在一個龐大的數據存數時代,然而大數據及其底層技術NoSQL也正成為了互聯網的一個流行語。對於穀歌以及Facebook,IBM這樣的全球互聯網企業,NoSQL這種高擴展的非關係型數據庫存數的使用往往已經超過關係型數據庫。事實上,在海量數據和半結構化數據的一些問題過程中,已經誕生了一係列新型數據庫產品,而這些數據庫我們稱之為NoSQL。
2013年4月26日-27日,由51CTO傳媒集團旗下WOT(World Of Tech)品牌主辦的2013大數據全球技術峰會在北京富力萬麗酒店召開。NoSQL產品千變萬化,特性和價值主張各有不同,因此常常難以選擇。記者深入與來自矽穀的軟件開發專家,層任職於Oracle,Microsoft和Google的Ming Lei老師溝通以及對NoSQL的實際分析,總結一些觀點給網友參考。
Ming Lei老師(左)
分布式係統和NoSQL
一個分布式係統包括很多不同的層麵,它包括應用層,數據層,表現層等等,現在主要說說應用層和數據層,這兩個都是分布式係統重要的組成部分,應用層一般來說是沒有狀態,數據層是不斷的做運算讓它保存狀態。數據層是分布式係統裏麵最困難,也是最高深的一個層麵。
Ming Lei老師的觀點是NoSQL是分布式係統裏麵的一個存儲器,它是分布式係統的一種。或者說是分布式係統的一個層麵。
NoSQL緩存對CDN緩存比較
在NoSQL這邊緩存的代表性是Memcached,NoSQL的緩存和CDN的緩存最大的區別在於NoSQL的緩存是指在數據層的緩存,並不是應用層的緩存,也不是網絡層的緩存,所以它的緩存是比較原始的數據。比方說這個應用邏輯裏麵的事物,並不是最終給用戶看的結果,那麼我們在網絡這一層做緩存的話,最常見的技術叫CDN,它的英文叫做ContentDeliveryNetwork,它一般是在網絡的末端靠近用戶的那一端的一些網絡服務器上緩存一些具體的網頁。
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安全性分析
其實係統可以在不同的層麵去解決安全性的問題,不一定要求係統每個層麵都要去解決安全性的問題,比方說分布式存儲係統,它一般是個存儲服務,從請求拿到結果,所以必然有一個遠程網絡調用,一個比較有利的解決方案是在網絡調用這塊解決安全性的問題,比如加上一些安全性的管理(用戶授權,用戶登陸),而不是在分布式存儲運算裏麵去解決這個問題。
Hadoop多維分析平台架構圖
NoSQL and SQL
在Ming Lei老師看來其實是兩者的應用場景不一樣。當我們針對的是互聯網的用戶,消費者,這樣的應用根據我們的經驗是它對事物的要求較為低,而企業應用它對事物的要求很高,比如說一個企業裏麵的財會,物流,人事,它往往都是公用同樣的一套數據庫,所以它對事物的要求會比較高。
比如說你把一個網站建在服務上麵,這個時候你的事物的這個層麵可能隻是說一個賬戶,也就是說你對數據庫的要求低,同時你的數據量又非常大,這個時候我們需要一種不同關係型數據庫的解決方案,這種解決方案就叫做NoSQL。它最大的區別在於要求的數據量大,對事物的要求低。
NoSQL數據庫的對比圖(點擊擴大)
NoSQL未來
我覺得目前在互聯網上比較多見的應用場景是,數據量特別大,對事物的要求相對低,或者事物的層麵比較窄,結構比較小。對這樣一些應用NoSQL是未來的一個發展方向。
但是,有些企業級的應用還是必須得使用關係型數據庫,目前在工業這一塊還沒有這樣的一個趨勢去把企業應用的關係型數據庫變成NoSQL。
最後更新:2017-04-03 18:51:45