如何用好NoSQL?Database-as-a-Service

作者: 逖靖寒  來源: 博客園  發布時間: 2010-10-28 15:51  閱讀: 1070 次  推薦: 0   原文鏈接   [收藏]  
摘要:NoSQL是什么?大家肯定都很清楚。但是如何用好NoSQL?我們還是要從以下幾個方面談起。

  為什么說NoSQL重要

  SQL語言和關系型數據庫(MySQL,PostgreSQL,Oracle,等等)是通用的數據解決方案,占有絕大多數的市場。不過在最近興起的NoSQL運動中,涌現出來了一批具備高可用性,支持線性擴展,支持Map/Reduce操作等等特性的數據產品,它們具有如下特性:

  • 頻繁的寫入操作,相對較少的讀取統計信息的操作(比如一個web訪問計數器)應該使用基于內存的key/value存儲系統,比如Redis,或者是具備本地更新特性的文檔存儲系統,如MongoDB。
  • 海量數據(比如數據倉庫中需要分析的數據)適合與存儲在一個schmaless,分布式的文件存儲系統中,如Hadoop。
  • 存儲二進制文件(比如mp3或者pdf文檔)并且能夠直接為用戶的瀏覽器提供下載功能,可以使用Amazon S3。
  • 臨時性的數據(比如網站的session,緩存HTML頁面信息,等等)適合存儲在Memcache。
  • 如果希望數據具備高可用性,并且能夠將數據丟失的風險降到最低,同時整個系統具備線性擴展的能力,可以考慮使用Cassandra和HBase。

  使用這些數據產品并不是要取代原有的數據產品,而是為不同的應用場景提供更多的選擇。

  提供最適合的數據存儲方案 - 如何選擇合適的NoSQL產品?

  NoSQL代表著:選擇合適的方案處理合適的業務場景。上面介紹的幾種NoSQL應用場景也許能夠幫助我們選擇合適的數據存儲方案,網上也有不少值得參考的資源。和其他的技術方案一樣,選擇適合你們的業務場景才是最重要的。

  絕大多數的應用都會有非常復雜的應用場景,如何找出一款NoSQL產品能夠適用所用的需求?答案是搭配使用多款NoSQL產品,傳統數據庫中的One-For-All的情況在NoSQL中是不存在的。比如下圖中,我們可以在一個網站中使用下面四款數據產品來提供服務:

Heroku App

  • MySQL用于存儲敏感的數據,比如用戶的資料,交易的信息等等。
  • MongoDB用于存儲大量的,相對不敏感的數據,比如博客文章的內容,文章訪問次數等等。
  • Amazon S3用于存儲用戶上傳的文檔,圖片,音樂等等數據。
  • Memcached用于存儲臨時性的信息,比如緩存HTML頁面等。

  選擇多樣的數據存儲方案同樣有利于提升我們對于NoSQL的數據產品的理解,從大量的解決方案中選擇最適合我們使用的產品,而不是把眼光僅僅放在某一款產品中。

  最適合的才是最好的。

  再論NoSQL

  目前市場上的關系型數據庫都是在多年前設計出來的,在設計這些關系型數據庫中的時候,磁盤存儲是廉價的,而內存和cpu的資源是昂貴的。而在今天再去考慮這個問題就不一樣了,內存和cpu都已經不再昂貴,同時具備線性擴展的特性又顯得尤為重要。

  NoSQL的數據產品傾向于使用內存作為首先的存儲。比如Redis和Memcached,幾乎都是在內存中完成的所有的操作。又比如Cassandra和HBase這樣的系統,它們使用了memtable的技術,使得所有寫入的數據先緩存到內存中,等到內存中積累了一定量的數據后,再一次性異步寫入到磁盤中。

  Database-as-a-Service

  目前提供Infrastructure-as-a-service的比如Amazon EC2,Google App Engine,Rackspace Cloud,未來將會出現Database-as-a-Service。目前已經有類似的服務提供商,比如MongoHQ (MongoDB),Cloudant (CouchDB),和Amazon RDS(MySQL)。它們提供了數據的存儲,管理和擴展服務,讓我們更加專注應用程序本身。

Database as a service

  更多關于NoSQL的文章可以參考:http://www.cnblogs.com/gpcuster/tag/NoSQL/

0
0
 
標簽:NoSQL Database
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()