十年前,亞馬遜雲科技正式推出Amazon DynamoDB,一種快速、靈活的 NoSQL 資料庫服務,可在任意規模環境中提供一致的個位數毫秒響應時間。
亞馬遜技術長Werner Vogels曾表示:“我們非常高興推出Amazon DynamoDB,一種快速、可靠且具有成本效益的 NoSQL 資料庫服務,專為網際網路規模的應用程式而設計。” Amazon DynamoDB代表了亞馬遜在大型非關係型資料庫和雲服務技術領域15年持續投入的成果。
Vogels表示:“我們早在2007年就發表了有關亞馬遜Dynamo技術細節的論文,並以此奠定了首批非關係型資料庫的雛形。最初的Dynamo基於一套強大的分散式系統原則設計,並生成了一個可隨意擴充套件和高可靠的資料庫系統。Amazon DynamoDB繼續基於這些原則構建,也是亞馬遜多年執行大規模非關係型資料庫和雲服務(如Amazon SimpleDB和Amazon S3)的經驗積累。很高興看到我們的探索和經驗轉化為易於使用的託管服務,並提供給我們的客戶。”
亞馬遜雲科技資料庫、資料分析、機器學習副總裁Swami Sivasubramanian和Vogels同為2007年Dynamo論文的合著作者之一。Swami是Amazon DynamoDB開發的主要貢獻者,那時他是一名從事分散式系統技術設計、實施和分析相關工作的亞馬遜研究工程師。
Amazon DynamoDB釋出十年之際,Swami表示:“我們正在經歷資料和機器學習的‘文藝復興’時代。如今企業可以將資料儲存在這些資料庫中,並快速開始在 Amazon S3 中構建自己的資料湖,然後就可以立刻開展資料分析,並在幾周甚至幾天時間內就能通過Amazon SageMaker實現人工智慧賦能,這真的非常了不起。我非常期待現在能有機會幫助客戶更快地從資料中獲得洞察。客戶真的希望將資料‘物以致用’,實現資料驅動的決策。越來越多的CIO和企業意識到這將成為資料使用者的‘生存法則’,那些有能力將資料應用於實際工作的人將披荊斬棘,無往不利。”
以下Swami與我們分享了Amazon DynamoDB的起源、前身以及未來。
關於Dynamo的起源
Swami:我們在2007年發表了Dynamo論文,探討這個話題之前,我們需要先追溯到2004、2005 年。那時我正在攻讀博士學位,(並隨後於2006年從阿姆斯特丹自由大學獲得電腦科學博士學位),也在考慮我將在哪裡工作。看到亞馬遜正在快速成長,並不斷突破常規,打破界限,我選擇了以亞馬遜研究工程師實習生的身份加入亞馬遜。
那時亞馬遜雲科技還不存在,加入亞馬遜後,我很快意識到作為一家電子商務公司,亞馬遜實際上也是一家科技公司。為了支援自身電子商務業務相關的各類運營場景和工作負載,亞馬遜湧現出了大量創新技術、專利和發明,這種情形在全球任何一家公司都難得一見。
在亞馬遜擔任工程師時,我和團隊曾在假期流量高峰期間經歷過一次嚴重的擴充套件失敗。這是由資料庫事務死鎖而導致的,其背後正是亞馬遜當時使用的商業關係型資料庫。故障發生後,我們一群工程師們一起編寫了一份錯誤更正文件,對發生了什麼、學到了什麼、如何解決問題以及如何避免問題再次發生等進行了詳細說明。
我當時問了一個問題:“為什麼我們要為這些工作負載使用關係型資料庫?本質上,它們並不需要 SQL 級別的複雜性和事務保證。”
這導致我們開始重新思考如何設計底層資料儲存。當時,還沒有可伸縮的非關係型資料庫,這是我們開始著手搭建Amazon Dynamo原型並撰寫論文的原因。事實上,Amazon Dynamo 並不是工程師們當時唯一思考和研究的架構。我們意識到我們還需要一個可擴充套件的儲存系統,Amazon S3 就誕生於此。同時,還需要一個更易於管理的關係型資料庫,能夠自動進行復制、故障切換和備份/恢復,這也是 Amazon RDS 的由來。
最初撰寫Dynamo論文時,我們就定了一條規則,即“在開發原始設計時不對外發布”,而是先將Dynamo執行於支援多個Amazon.com服務的實際生產環境中。這樣,Dynamo論文就會是一種端到端的可用方案,並有實際應用經驗。Werner和我對此感受非常強烈,因為我們不希望僅僅撰寫一篇學術論文而已。10年後,我們非常榮幸的是Dynamo論文還獲得了ACM的時間考驗獎,這是由ACM主辦的The SIGOPS Hall of Fame Award,從2016年開始評選過去十年科技圈最具影響力的論文名人堂。
構建Amazon DynamoDB的初衷及其過去十年的演進
Swami:Amazon DynamoDB背後的想法來自於與SmugMug、Flickr等客戶執行長的對話和討論。他們是最早帶有網際網路屬性的公司,而在當時類似這樣的網際網路公司正在快速走向市場。他們的典型特徵包括線上使用者數量呈爆炸式增長、資料模式不固定,追求快速交付和輕運維等。傳統關係型資料庫將所有資料儲存在一個盒子中,無法高效地擴充套件,這迫使使用者需要對其資料庫重新分片,然後還需要管理所有的分割槽和重新分割槽等,這讓使用者面臨巨大的運維挑戰和壓力。
這對我們來說並不新鮮,構建原始Amazon Dynamo的初衷正是應對這些挑戰。當時,Amazon Dynamo還不是一項服務,而是一個由亞馬遜工程師構建的軟體系統。在一次客戶諮詢會議上,時任Flickr 執行長Don MacAskill表示:“你們已經啟用了 Amazon Dynamo,驗證了可擴充套件非關係型資料庫系統的可行性,為什麼不能把它作為外部服務提供給我們使用?”
當時,所有亞馬遜雲科技的相關管理人員都在場,實際上,這也是我們問自己的一個問題。Flickr並不是唯一需要它的客戶,越來越多的客戶想要可擴充套件的資料庫,無需處理分割槽和重新分割槽等複雜的運維工作,同時他們還需要極高的可用性。於是,我們開始認真思考構建一個不受SQL API限制的、可擴充套件的雲資料庫。
Amazon DynamoDB與原始Amazon Dynamo不盡相同,它實際上是通過幾個原始Amazon Dynamo元件搭建的一項易於使用的雲服務。客戶不再需要配置叢集,只需建立一個表儲存資料,即可輕鬆實現無縫縮放。管理員不必執行任何操作,甚至無需安裝單個庫來運算元據庫。
Amazon Dynamo到Amazon DynamoDB的演變非常重要,亞馬遜真正以前所未有的方式擁抱雲,獲得它的彈性和可擴充套件性。
我們在2012年1月18日正式釋出Amazon DynamoDB,該服務一經推出就大受歡迎,Flickr等公司率先使用該服務。Amazon DynamoDB強大的彈性、個位數毫秒的延遲效能等深受客戶青睞。我們進行了大量創新,從協議層一直到SSD儲存的底層儲存層等各項功能。
這裡不得不提的一個有趣的用例,也是最早將DynamoDB投入生產的客戶之一,他們做的是超級碗(Super Bowl:全國橄欖球聯盟決賽——全美直播的體育界春晚)廣告投放。 因為Amazon DynamoDB具備強大的彈性,可以無縫地擴充套件到每秒100,000次寫入,並在超級碗活動結束後縮減,這樣客戶就不會擔心產生額外的成本。當年,這在技術領域是個大事。現在大家習以為常的橫向擴充套件與彈性,對當時的資料庫而言,那是無法想象的.
那是一個大膽的設想。Amazon DynamoDB專為雲而構建的架構讓所有橫向擴充套件用例成為可能。現在,Amazon DynamoDB正為多個高流量Amazon站點和系統提供支援,包括 Alexa、亞馬遜全球電商網站和所有亞馬遜運營中心。2021年,在亞馬遜長達66小時的Prime會員日大促期間,上述站點和系統進行了數萬億次API呼叫,Amazon DynamoDB以低至個位數毫秒延遲的高效能表現,無感支援峰值達每秒8,920萬個請求,同時確保系統的高可用性。
Amazon DynamoDB自2012年問世以來,我們為其增加了大量創新功能,不僅涉及底層可用性、永續性、安全性和規模等特性,還包括易用性等。
Amazon DynamoDB不止步於鍵值儲存,還支援基於雜湊的分割槽和基於範圍的分割槽,並且增加了對二級索引的支援,支援更復雜的查詢功能,同時不影響規模或可用性。
現在,Amazon Kinesis Data Streams也適用於Amazon DynamoDB,捕獲可擴充套件的流式資料。我認為任何資料庫都不應該是孤島,更不能是死衚衕。它應該支援生成變化的資料流,然後將這些資料流連線到分析應用程式或其他資料儲存。
同時,我們也針對備份和恢復等功能全面創新。對於像Amazon DynamoDB 這樣具有數百萬個分割槽的大型資料庫系統而言,備份和恢復並非易事,我們致力於通過創新讓客戶獲得更好的體驗。
我們還為Amazon DynamoDB新增了建立全域性表的功能,以便客戶可在輕鬆實現資料庫負載全球覆蓋的同時,獲得近乎本地執行的讀寫效能。此外,Amazon DynamoDB還擴充套件了事務處理能力。所有這些創新都致力於不斷提升Amazon DynamoDB的可用性和可擴充套件性。
我們同時致力於為客戶提供更高的成本效益。客戶通常需要長期儲存資料,雖然這些舊資料可能很少被訪問,但它必須保持高度可用,以便不時之需。例如,社交媒體使用者很少訪問舊的內容和圖片,但一旦有這類訪問請求,需要確保可以立即為使用者提供這些內容。這種不經常訪問的資料可能會給客戶帶來高昂的儲存費用,而且這類資料的數量還在不斷增長。過去,為了優化成本,客戶會通過編寫程式碼的方式,將舊的、訪問頻率較低的資料從Amazon DynamoDB 移動到儲存成本較低的如Amazon S3中。
在2021 re:Invent全球大會上,我們推出了Amazon DynamoDB Standard-Infrequent Access表類,一種新的經濟高效的表類,用於儲存不經常訪問的資料,同時保持Amazon DynamoDB的高可用性和效能。
不忘初心,我們始終將DynamoDB的最初願景作為指引,持續創新,為客戶提供更易於查詢的用例,支援進行復雜全域性事務複製等,不斷擴充套件能力範圍,同時持續優化管理成本。
展望Amazon DynamoDB的未來十年
Swami:十年前,當我們推出Amazon DynamoDB 時,客戶才剛剛開始對雲本身有了更好的理解,它的好處是什麼,可以做什麼。
如今,就客戶構建IT應用程式而言,雲已經成為的新常態,規模也是新常態,每個應用程式都需要基於不確定性構建。我們將繼續代表客戶進行創新,Amazon DynamoDB本身也在這個持續變革的旅程中。我們將繼續朝著端到端的現代化資料戰略邁進。正如之前提到的,資料庫不應該是孤島。
客戶將不再只想在資料庫中儲存和查詢資料,他們需要分析這些資料來創造價值,無論是通過建立更好的個性化推薦引擎,還是使用機器學習執行預測分析的預測系統。將資料流點對點無縫連線,並繼續讓Amazon DynamoDB更安全、高可用,效能更強且易於使用,這些都將是我們永無止境的追求。