標籤:dynamodb aws 亞馬遜 雲端運算
2012年1月18日,Amazon發布了AmazonDynamoDB,一個完全託管的,高效能,高可靠,經濟高效的NoSQL資料庫。DynamoDB非常適合互連網規模的應用。
DynamoDB資料庫融入了亞馬遜在大規模非關係型資料庫和雲端運算領域積累的多年豐富經驗。早在2007年,亞馬遜就曾經發布了一篇論文,深入討論了Amazon Dynamo使用的設計理念和實現技術,以及如何解決大規模擴充和同時提供高可靠保護的問題。最初的Dynamo設計基於一系列在分布式系統中搭建高可靠、高擴充系統的核心的原則。現在的Amazon DynamoDB,繼續基於這些設計原則來構建,並且融入了Amazon多年以來在非關係型資料庫和雲端運算領域積累的寶貴經驗,如AmazonSimpleDB和Amazon S3服務。客戶可以非常簡單的方式使用到完全託管的資料庫服務。
Amazon DynamoDB 是高效能、可擴充的NoSQL資料庫。今天的互連網應用的使用者、流量和資料都在不斷地增長,資料庫如何很好地擴充滿足容量與效能的需求成為令人頭疼的問題。使用DynamoDB,開發人員可以從小規模開始,在應用吸引了更多使用者的時候,相應地增加表的效能。DynamoDB中的表可以讓使用者儲存不限容量的資料。通過分布式的技術,DynamoDB把使用者對一個表的資料和流量請求分布在足夠數量的伺服器上來滿足並發請求的效能需求。同時,在面對任何規模的請求的時候,DynamoDB都可以提供可以預測的高效能低時延的使用者訪問。
DynamoDB給使用者提供了如下價值:
· 使用簡單。DynamoDB協助使用者處理所有的資料庫管理工作,從硬體資源配置,安裝配置,分布式叢集的搭建,和日常的系統維護。開發人員可以從繁瑣的資料庫管理工作解放出來。作為完全託管的資料庫,你不需要專家的技能來管理DynamoDB的安裝-你的開發人員完全可以獨立完成。訪問DynamoDB的時候,可以通過簡單地API的方式。目前通過僅僅13個API,你就可以實現對DynamoDB資料庫的表的管理,查詢檢索操作,單個項目Item的訪問和實現批量存取項目。
· 可擴充。Amazon DynamoDB的設計,可以把單個表的資料,分布在多個可用性區域內(AZ)的多個伺服器上,來滿足容量和吞吐的需求。
· 高效能。在高並發請求的情況下,DynamoDB仍然可以保證很低的延時。因為所有的資料都是採用固態磁碟,所以可以保證持續的高效能。運行在同一個地區內的EC2上的應用程式,在訪問DynamoDB的資料對象的時候,通常可以在伺服器端體驗到個位元毫秒的回應時間。更重要的是,DynamoDB的效能(回應時間)是可以預測的。即使在資料增長的情況下,因為DynamoDB分布式的特點,仍然可以維持穩定的低時延的響應。DynamoDB在後台把你的資料在大量資源之間進行分區和在需要的時候重新分區,從而能夠在大規模訪問的情況下還能提供很高的IO效能。
· 預配置的輸送量。AmazonDynamoDB允許你在建立表的時候,指定應用所需要支援的輸送量。你可以分別指定每秒鐘支援多少個讀取的輸送量和寫如的輸送量。AmazonDynamoDB將為你預留必要地機器資源,從而用一致性的低延遲的效能滿足你得請求。更重要的是,預配置的效能輸送量不是一成不變的。在建立表之後,如果你的應用程式非常成功,有了大幅度的增長,你可以隨時調大表的效能的輸送量,從而支撐更多的使用者訪問請求。相應地,如果你目前應用程式不再需要預配置的效能的輸送量,你還可以靈活地降低輸送量指標,從而降低成本。
· 持久和高可用。AmazonDynamoDB自動地在至少3個資料中心內複製資料。每個寫操作,在至少寫入兩個節點之後,才會返回寫成功確認。在任何一個節點或者磁碟發生損壞的時候,資料都會及時的重新複製資料和重新分區。這樣可以確保在各種複雜的故障出現的時候,DynamoDB仍然可以正常的提供服務,你完全不需要擔心因為物理故障造成的資料丟失的情況。
· 模式自由。Amazon DynamoDB使用起來非常靈活。使用者不會被限制在某一個特定的資料模型。傳統的SQL資料庫中,表的模式在建立的時候就定義好。你不能修改或者增加新的列到一個已經建立和定義好的表中。AmazonDynamoDB沒有一個固定的模式,使用者可以隨時給表增加新的屬性。靈活地資料模型,可以支援應用程式的敏捷開發和快速迭代更新。
· 靈活地一致性選擇。 在分布式環境中經常遇到如何確保資料的一致性的問題。DynamoDB讓開發人員自由地選擇一致性模型。開發人員可以選擇採用強一致性的方式,還是最終一致性的方式來讀取資料。採用最終一致性的方式,意味著在一個寫操作完成後,馬上讀取資料,可能無法讀取到最新的資料。最終一致性的模型可以在最大程度上確保服務的可用性,並且改善效能。比較典型的用例是大家在網上購物時使用的購物車,或者網站的評論資訊等等。如果選擇採用強一致性的方式讀取資料,則會犧牲一定程度的效能和服務的可用性,好處是在任何情況下都可以訪問到最新的資料,軟體開發比較簡單。比較典型的用例是需要強一致性的情境,比如網上購物時訂單提交的情境。需要使用強一致性來確保同一商品不會同時銷售給兩個不同的客戶。
· 可預測的成本。Amazon DynamoDB的定價模式非常簡單和可以預測。基於每月每GB的儲存容量,和每月預配置的讀取和寫入的容量單位計費。容量比較容易理解。預配置的讀取和寫入的效能容量單位是很關鍵的概念呢。每個讀取容量單位(或者寫入容量單位)支援每秒鐘進行1次讀取(或者寫入)1個項目(item),每次讀取操作最大4KB大小,每次寫入操作最大1KB大小。超出大小的項目(item)需要額外的效能吞吐容量。如果客戶選擇最終一致性的讀取的方式,將獲得兩倍於預配置的讀取效能的輸送量。舉個例子,比如你配置了1000個讀取效能容量,和1000個寫入效能容量。這種情況下你的表將可以支撐每秒鐘1000個讀取操作,和1000個寫入操作。如果是最終一致性的讀取方式的話,你的表將可以支撐每秒2000個讀取操作。
為了進一步提高應用訪問的效能,Amazon DynamoDB建立和維護針對主鍵屬性的索引。應用程式提供主鍵給資料庫,就可以很快地擷取所對應的資料。除此之外,AmazonDynamoDB還支援建立全域和本地的二級索引。這樣應用程式在查詢除了主鍵外的其他屬性時,也可以獲得很好地效能。客戶可以對一個表建立一個或者多個二級索引,然後對索引執行查詢query的操作。
Amazon DynamoDB能讓使用者以簡單並且經濟有效地方式儲存和檢索任意規模的資料,同時提供高並發下地低時延的響應。對於輸送量的保證和幾毫秒的低時延響應,使DynamoDB非常適合遊戲、廣告、移動等等基於互連網的應用程式。
如果您想要瞭解更詳細的資訊,可以訪問DynamoDB頁面。