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