NoSQL 數據庫:DynamoDB 介紹

jopen 12年前發布 | 15K 次閱讀 NoSQL數據庫 NOSQL

DynamoDB 是 Amazon最新發布的 NoSQL 產品。DynamoDB是一個性能好、可靠高且具有可擴展性的 NoSQL 云數據庫服務,DynamoDB集15年分布式非關系性數據庫開發之精粹,又通過內部使用考驗,是AWS團隊精心打造的產品。

DynamoDB有以下幾個特性:

  • 穩定的性能保證。為了保證高性能,DynamoDB采用固態硬盤(SSD)進行存儲,對于一般的請求,DynamoDB在十毫秒內就可以完成,而且處理請求的速度不會隨著數據量的增加而減慢。
  • 讀/寫流量限制預設(Provisioned Throughput)。這個概念和我們經常接觸的按帶寬收費非常相像,用戶必須指定對數據庫的讀/寫帶寬,Amazon會按用戶設置的讀/寫帶寬收費。但與傳統的帶寬收費不同,用戶可以隨時通過控制臺或者API更改數據庫的讀/寫流量的限制。
  • 自動擴容。DynamoDB不會對用戶的數據規模大小做任何限制,后臺會默默地把用戶的數據分布到各個機器上去。
  • 強一致性。用戶可以通過參數指定要讀的數據是否需要一致性。這里需要注意的是,如果讀的數據全是要求強一致性的話,那么在設置讀流量上限時需要設置成實際讀流量的兩倍。
  • 完全分布式,無中心化架構。一個表上的數據可以分布到幾百臺機器上。
  • Schema free。都叫NoSQL了,Schema必須free。
  • 和Amazon Elastic MapReduce深度整合。在EMR上可以調用DynamoDB的數據進行MapReduce,并將計算結果保存到S3,同時也可以用EMR對DynamoDB做備份。
  • 容災。容錯、完善的監控、安全、物美價廉、管理方便,這些都是云服務應該做到的。
  • 大家第一眼看到Provisioned Throughput時,都會覺得這個概念比較別扭。為什么要給自己限制讀/寫流量呢?但仔細分析之后大家會發現Provisioned Throughput是迫不得已的做法,而且前三個特性其實也與之有著不可分割的關聯。
  • DynamoDB是一個共享型的數據庫云服務。所謂共享型的數據庫云服務,是指一臺機器上的CPU、內存及磁盤資源會給多用戶使用。共享型服務最大的問題在于資源的公平性,如何保證一個用戶對資源的使用不會影響到其他用戶?例如,用戶A在DynamoDB上保存了10GB的數據,假設這10GB 數據全部保存在同一臺機器上,而且這臺機器的讀性能只有1GB/秒。此時,如果用戶每秒要讀1GB數據,必然會影響到其他用戶對同臺機器上的數據訪問,因為一臺機器的吞吐量是固定的。這樣就沒有辦法做到每個用戶每個請求都有穩定的性能保證。正如各種MySQL共享服務會根據用戶預購買的數據空間來限定每秒的請求數來解決資源公平性一樣,DynamoDB利用Provisioned Throughput來解決資源公平性。如果用戶的讀/寫請求量變大,就得提高讀/寫請求的帶寬上限,付更多的錢,DynamoDB同時會根據用戶購買的帶寬將數據分散到更多的機器上。目前,單表最多支持10000個1KB讀/寫(相當于10MB/s的讀寫),單用戶最多20000個1KB讀/寫(相當于 20MB/s的讀寫)。如果需求增加,則需要填表單獨申請。同時還有更多詳細的規定,具體詳見用戶手冊(其實所有的規定都是受到資源公平性以及后臺具體實現的約束)。

項目主頁:http://www.baiduhome.net/lib/view/home/1350874054977

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!