目前我們都生活在一個龐大的資料存數時代,然而大資料及其底層技術NoSQL也正成為了互連網的一個流行語。對於Google以及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。