Dynamo 數據存儲的成功激勵了亞馬遜機器學習副總裁 Swami Sivasubramanian(右上)、Amazon.com 首席技術官 Werner Vogels(右下)和同事撰寫 Dynamo 研究論文,並在2007年 ACM 作業系統原理研討會(SOSP會議)上分享。Dynamo 論文被認為是 NoSQL 的開篇之作。Amazon DynamoDB,雲託管 NoSQL 資料庫服務於10年前的今天走上歷史舞台。
Amazon DynamoDB ——10 年之約
10 年前的今天(2012年1月19日),亞馬遜雲科技推出了 Amazon DynamoDB。
Amazon.com 首席技術官 Werner Vogels 在一篇技術博客中寫道:「十年前的今天是非常激動人心的一天,因為我們發布了 Amazon DynamoDB,這是一種快速、高度可靠且具有成本效益的 NoSQL 資料庫服務,旨在用於網際網路規模的應用程式。 Amazon DynamoDB 代表的是亞馬遜在大型非關係資料庫和雲服務技術領域 15 年持續投入的成果。」
「幾年前,我們發表了一篇關於亞馬遜 Dynamo 分布式存儲技術的論文,並成為了首批非關係資料庫的雛形。」 Vogels 繼續說道, 「最初的 Dynamo 設計基於一強大的核心分布式系統原則,最終產生了一個超可擴展和高度可靠的數據存儲系統。而它的下一代演進產品 Amazon DynamoDB 是一項新的雲服務,它繼續以這些原則為基礎,並建立在我們多年大規模運行非關係資料庫和雲服務(如 Amazon SimpleDB 和 Amazon S3)的經驗之上。我很高興看到亞馬遜所有的探索和經驗都以易於使用的託管服務的形式提供給我們的客戶。」
和 Werner 一樣,彼時還是一名亞馬遜研究工程師,從事分布式系統技術的設計、實施和分析相關的工作的 Swami Sivasubramanian(現任亞馬遜雲科技資料庫、數據分析、機器學習副總裁)是同為2007年 Dynamo 論文的合著作者之一,且是 Amazon DynamoDB 開發的主要貢獻者。
「在數據和機器學習方面,我們正在經歷一個驚人的文藝復興時代。」而 Amazon DynamoDB 發布十年後,Swami 表示,「我們現在生活在這樣一個時代,您可以將數據實際存儲在這些資料庫中,並快速開始在 Amazon S3 中構建您的數據湖,然後您可以立刻開展數據分析,甚至在幾周甚至幾天就能通過 Amazon SageMaker 實現人工智慧賦能。這令我感到震驚。我們現在有機會幫助客戶更快地從他們的數據中獲得洞察力」 。
Swami 認為,「這是一個真正讓我興奮的使命,因為客戶真的希望將他們的數據用於工作以實現數據驅動的決策。越來越多的 CIO 和組織意識到這將是最知情的人的生存,而那些將他們的數據用於工作的人不僅會生存下來,而且會茁壯成長。」
為紀念 Amazon DynamoDB 推出 10 周年,我們向 Swami 詢問了三個關於 Amazon DynamoDB 的起源、前身以及未來的問題。
提問Qustions & 解答Answers
Q1:您是 2007 年 Dynamo 論文的合著作者。當時,該行業正在過渡到橫向擴展與縱向擴展的架構方法。您能告訴我們有關 Dynamo 的起源故事嗎?
Swami:提到 2007 年,我必須從 2004、2005 年回顧開始。即使我正在攻讀博士學位(Swami 於 2006 年從阿姆斯特丹自由大學獲得計算機科學博士學位),我也在考慮我將在哪裡工作。最終說服我以研究工程師實習生的身份加入亞馬遜,是因為我看到了亞馬遜正在快速成長,突破規劃的界限。
我承認我作為一個局外人有點懷疑。那時,亞馬遜雲科技甚至還不存在。但是當我加入時,很快就有了一個「瞬間」——亞馬遜是一家電子商務公司,但實際上它是一家也從事電子商務的科技公司。看到亞馬遜必須發明如此多的新技術來支持其電子商務工作量,這對我來說是一個有趣的啟示。
作為一名實習生,我在 Amazon.com 擔任工程師,在假期流量高峰期間,由於資料庫事務死鎖問題,我們經歷了嚴重的擴展失敗。這個問題是由我們當時使用的商業供應商的關係資料庫引起的。一群工程師聚在一起編寫了我們所說的 COE(correction of errors document),這是一份錯誤更正文檔,我們在其中說明發生了什麼、我們學到了什麼、我們如何解決問題以及如何避免再次發生。
我不知道是我太天真還是只是對只有 20 歲的實習生有信心,但我問了一個問題『我們為什麼要為這種負載使用關係資料庫?這些工作負載不需要 SQL 級別的複雜性和事務保證。
這讓我們開始重新思考如何設計底層數據存儲。當時還沒有一個可伸縮的非關係資料庫。這就是我們著手搭建Amazon Dynamo 原始版的原因,也是我們撰寫論文的原因。Amazon Dynamo 並不是我們當時唯一在思考研究的架構。我們意識到我們還需要一個可擴展的存儲系統,Amazon S3 就誕生於此,我們還意識到我們需要一個更易於管理的關係資料庫,能夠進行自動複製、故障切換和備份/恢復,這也是我們創建 Amazon RDS 的初衷。
我們最初寫 Dynamo 論文時定了一條規則,即「在我們開發原始設計時不要發布」,而是首先讓 Dynamo 在支持多個 Amazon.com 服務的生產環境中運行,這樣 Dynamo 論文將是一種端到端的撰寫與經驗背書。Werner 和我對此感覺非常強烈,因為我們不希望僅僅撰寫一篇學術論文。這就是為什麼當 10 年後那篇論文獲得ACM的時間考驗獎(由ACM主辦的The SIGOPS Hall of Fame Award,從2016年開始評選過去十年科技圈最具影響力的論文名人堂)時,我感到非常自豪。
Q2:Amazon DynamoDB 的起源故事是什麼?過去十年該技術是如何發展的?
Swami:Amazon DynamoDB 背後的想法來自於與 SmugMug 和 Flickr 的執行長 Don MacAskill 等客戶的討論。其實,他們就是最早帶有網際網路屬性的公司,而在當時像這樣的網際網路公司也在快速走向市場。在線用戶數量呈爆炸式增長,數據模式不固定,追求快速交付,輕運維,是他們的特徵。將所有數據存儲在一個盒子中的傳統關係資料庫模型無法很好地擴展,它迫使用戶重新分片他們的關係資料庫,然後管理所有的分區和重新分區等等。
這對我們來說並不新鮮。這些挑戰是我們構建原始 Amazon Dynamo 的原因,當時它還不是一項服務,還是一個由亞馬遜工程師操作的軟體系統。在我們的一次客戶諮詢會議上,Don 說:「你們都啟動了 Amazon Dynamo,並展示了可擴展的非關係資料庫系統的可能性。為什麼我們不能將其作為外部服務?」
當時,所有高級亞馬遜雲科技高管都在場,這也是我們當時問自己的一個問題。Don 不是唯一需要它的客戶,越來越多的客戶想要那種無需處理分區和重新分區的可擴展資料庫,而且他們還想要極高的可用性。逐漸的,我們開始認真思考構建一個不受 SQL 限制的可擴展雲資料庫。
Amazon DynamoDB 與原始 Amazon Dynamo 不同,因為它實際上是通過幾個原始 Amazon Dynamo 組件搭建了一易於使用的雲服務。我們的客戶不再需要配置集群,通過創建一個表(Table)存儲數據,就可以實現並無縫縮放;他們不必任何操作,甚至無需安裝單個庫來操作資料庫。
Amazon Dynamo 到 Amazon DynamoDB 的這種演變非常重要,因為我們真正以前所未有的方式擁抱雲,以及它的彈性和可擴展性。
我們於 2012 年 1 月 18 日推出它,一經推出就大受歡迎。Don MacAskill 的公司和其他幾家公司開始使用它。從發布之日起,不僅彈性,而且個位數的延遲性能都與客戶產生了非常好的共鳴。我們進行了相當多的創新,從協議層一直到 SSD 存儲的底層存儲層,以及我們啟用的各種其他功能。最早的生產項目之一是有一個有趣用例的客戶;他們在做超級碗(Super Bowl:全國橄欖球聯盟決賽,全美直播的體育界春晚)廣告。
因為 Amazon DynamoDB 非常有彈性,它可以無縫地擴展到每秒 100,000 次寫入,然後在超級碗結束後縮減,這樣他們就不會再產生額外成本。
這在技術領域也是個大事件,現在我們司空見慣的橫向擴展與彈性,對當時的資料庫來說還不具備這樣的想像空間。但是 Amazon DynamoDB 為雲而構建的架構使所有這些橫向擴展用例成為可能,這也是 Amazon DynamoDB 現在支持多個高流量 Amazon 站點和系統(包括 Alexa、Amazon.com 和所有 Amazon)的履行中心的原因之一。
去年,在我們 66 小時的 Prime Day 期間,這些來源進行了數萬億次 API 調用,而 Amazon DynamoDB 以個位數毫秒的性能保持了高可用性,達到每秒 8920 萬個請求的峰值。
自 2012 年以來,我們增加了許多創新,不僅是因為它的基本可用性、耐用性、安全性和規模,而且還因為它的易用性功能。
我們不止步於鍵值存儲,還支持基於哈希的分區和基於範圍的分區,並且我們增加了對二級索引的支持,以支持更複雜的查詢功能——同時不影響規模或可用性。
我們現在還支持通過適用於 Amazon DynamoDB 的 Amazon Kinesis Data Streams 捕獲可擴展的流式數據。我堅信任何資料庫的工作都不應該是一個孤島,更不可能是死胡同。它應該生成變化的數據流,然後使用它來將其連接到分析應用程式或其他數據存儲。
我們繼續在備份和恢復等功能上進行全面創新。對於像 Amazon DynamoDB 這樣具有數百萬個分區的大型資料庫系統,進行備份和恢復並非易事,許多偉大的創新都致力於讓客戶輕鬆體驗這種體驗。
我們還添加了創建全局表(Global Table)的功能,以便客戶可以實現資料庫負載的全球覆蓋的同時,具備本地讀寫性能。然後我們增加了使用 Amazon DynamoDB 進行事務的能力,所有這些都著眼於您如何繼續保持 Amazon DynamoDB 圍繞可用性和可擴展性的使命。
最近,我們還致力於更強的成本優化。客戶通常需要長期存儲數據,雖然這些舊數據可能很少被訪問,但它必須保持高度可用。
例如,社交媒體應用程式的最終用戶很少訪問較舊的帖子和上傳的圖像,但應用程式必須確保在請求時可以立即訪問這些工件。這種不經常訪問的數據可能會給客戶帶來巨大的存儲費用,因為它們的數量不斷增長,並且存儲這些數據的成本相對較高,因此客戶在這些情況下通過編寫代碼將較舊、訪問頻率較低的數據從 Amazon DynamoDB 移動到成本較低的存儲來優化成本 Amazon S3 等替代品。
因此,在最近的 re:Invent 大會上,我們推出了 Amazon DynamoDB Standard-Infrequent Access 表類,這是一個新的經濟高效的表類,用於存儲不經常訪問的數據,同時保持 Amazon DynamoDB 的高可用性和性能。
我們將保持 Amazon DynamoDB 的最初願景作為指引,持續創新,以幫助客戶提供更易於查詢的用例、進行複雜的全局事務複製的能力,同時繼續管理成本。
Q3:未來 10 年會帶來什麼?
Swami:當我們十年前開始使用 Amazon DynamoDB 時,客戶才剛剛開始更好地理解雲本身——它的好處以及他們可以做什麼。
現在,我們生活在這樣一個世界中,就客戶如何 IT 應用程式而言,雲是新常態,而規模也是新常態,每個應用程式都要基於不確定性構建。Amazon DynamoDB 本身將在這個持續的旅程中,我們將繼續代表客戶進行創新。我們將繼續朝著端到端的現代化數據戰略使命邁進。因為正如我之前提到的,「沒有資料庫是孤島」。
客戶不再只想在他們的資料庫中存儲和查詢數據。然後,他們想要分析這些數據以創造價值,無論是更好的個性化或推薦引擎,還是可以使用機器學習運行預測分析的預測系統。
將點對點連接起來,並繼續使 Amazon DynamoDB 更安全、更可用、更高性能和更易於使用,這將是我們永無止境的旅程。
*本文由特約撰稿人整理,並由亞馬遜雲科技轉載
引領風向,重塑未來
2021 亞馬遜雲科技 re:Invent 全球大會
一站即得!
雲計算前沿趨勢
趕緊掃描下方二維碼
查看完整回放