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






