天天看點

Amazon DynamoDB 的10 年之約

作者:亞馬遜雲科技
Amazon DynamoDB 的10 年之約
Amazon DynamoDB 的10 年之約

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 的10 年之約

我們現在還支援通過适用于 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 全球大會

一站即得!

雲計算前沿趨勢

趕緊掃描下方二維碼

檢視完整回放

Amazon DynamoDB 的10 年之約