用好NoSQL,你應(yīng)該了解Database-as-a-Service
為什么說NoSQL重要
SQL語言和關(guān)系型數(shù)據(jù)庫(MySQL,PostgreSQL,Oracle,等等)是通用的數(shù)據(jù)解決方案,占用絕大多數(shù)的市場。不過在最近興起的NoSQL運(yùn)動中,涌現(xiàn)出來了一批具備高可用性,支持線性擴(kuò)展,支持Map/Reduce操作等等特性的數(shù)據(jù)產(chǎn)品,它們具有如下特性:
頻繁的寫入操作,相對較少的讀取統(tǒng)計信息的操作(比如一個web訪問計數(shù)器)應(yīng)該使用基于內(nèi)存的key/value存儲系統(tǒng),比如Redis,或者是具備本地更新特性的文檔存儲系統(tǒng),如MongoDB。
海量數(shù)據(jù)(比如數(shù)據(jù)倉庫中需要分析的數(shù)據(jù))適合與存儲在一個schmaless,分布式的文件存儲系統(tǒng)中,如Hadoop。
存儲二進(jìn)制文件(比如mp3或者pdf文檔)并且能夠直接為用戶的瀏覽器提供下載功能,可以使用Amazon S3。
臨時性的數(shù)據(jù)(比如網(wǎng)站的session,分布式的鎖信息,等等)適合存儲在Memcache。
如果希望數(shù)據(jù)具備高可用性,并且能夠?qū)?shù)據(jù)丟失的風(fēng)險降到最低,同時整個系統(tǒng)具備線性擴(kuò)展的能力,可以考慮使用Cassandra和HBase。
使用這些數(shù)據(jù)產(chǎn)品并不是要取代原有的數(shù)據(jù)產(chǎn)品,而是為不同的應(yīng)用場景提供更多的選擇。
提供最適合的數(shù)據(jù)存儲方案 - 如何選擇合適的NoSQL產(chǎn)品?
NoSQL代表著:選擇合適的方案處理合適的業(yè)務(wù)場景。上面介紹的幾種NoSQL應(yīng)用場景也許能夠幫助我們選擇合適的數(shù)據(jù)存儲方案,網(wǎng)上也有不少值得參考的資源。和其他的技術(shù)方案一樣,選擇適合你們的業(yè)務(wù)場景才是最重要的。
絕大多數(shù)的應(yīng)用都會有非常復(fù)雜的應(yīng)用場景,如何找出一款NoSQL產(chǎn)品能夠適用所用的需求?答案是搭配使用多款NoSQL產(chǎn)品,傳統(tǒng)數(shù)據(jù)庫中的One-For-All的情況在NoSQL中是不存在的。比如下圖中,我們可以在一個網(wǎng)站中使用下面四款數(shù)據(jù)產(chǎn)品來提供服務(wù):
MySQL用于存儲敏感的數(shù)據(jù),比如用戶的資料,交易的信息等等。
MongoDB用于存儲大量的,相對不敏感的數(shù)據(jù),比如博客文章的內(nèi)容,文章訪問次數(shù)等等。
Amazon S3用于存儲用戶上傳的文檔,圖片,音樂等等數(shù)據(jù)。
Memcached用于存儲臨時性的信息,比如緩存HTML頁面等。
選擇多樣的數(shù)據(jù)存儲方案同樣有利于提升我們對于NoSQL的數(shù)據(jù)產(chǎn)品的理解,從大量的解決方案中選擇最適合我們使用的產(chǎn)品,而不是把眼光僅僅放在某一款產(chǎn)品中。
最適合的才是最好的。
再論NoSQL
目前市場上的關(guān)系型數(shù)據(jù)庫都是在多年前設(shè)計出來的,在設(shè)計這些關(guān)系型數(shù)據(jù)庫中的時候,磁盤存儲是廉價的,而內(nèi)存和cpu的資源是昂貴的。而在今天再去考慮這個問題就不一樣了,內(nèi)存和cpu都已經(jīng)不再昂貴,同時具備線性擴(kuò)展的特性又顯得尤為重要。
NoSQL的數(shù)據(jù)產(chǎn)品傾向于使用內(nèi)存作為首先的存儲。比如Redis和Memcached,幾乎都是在內(nèi)存中完成的所有的操作。又比如Cassandra和HBase這樣的系統(tǒng),它們使用了memtable的技術(shù),使得所有寫入的數(shù)據(jù)先緩存到內(nèi)存中,等到內(nèi)存中積累了一定量的數(shù)據(jù)后,再一次性異步寫入到磁盤中。
Database-as-a-Service
目前提供Infrastructure-as-a-service的比如Amazon EC2,Google App Engine,Rackspace Cloud,未來將會出現(xiàn)Database-as-a-Service。目前已經(jīng)有類似的服務(wù)提供商,比如MongoHQ (MongoDB),Cloudant (CouchDB),和Amazon RDS(MySQL)。它們提供了數(shù)據(jù)的存儲,管理和擴(kuò)展服務(wù),讓我們更加專注應(yīng)用程序本身。
未來無限美好。
原文鏈接:http://www.cnblogs.com/gpcuster/archive/2010/10/20/1857138.html






