亚马逊AWS官方博客
DynamoDB,十周年快乐!🎉🎂🎁
2012 年 1 月 18 日,Jeff 和 Werner 宣布全面推出 Amazon DynamoDB,这是一种灵活的完全托管式 NoSQL 数据库服务,可在任何规模下实现个位数毫秒级性能。
在过去的 10 年中,成千上万的客户采用了 DynamoDB。它经常在性能和可扩展性方面达到新高峰。例如,在 2021 年 6 月的最后一次 Prime 会员日促销活动中,它在 66 小时内处理了数万亿次请求,同时保持个位数毫秒级性能,峰值为每秒 8920 万次请求。Disney+ 每天使用 DynamoDB 提取内容、元数据和数十亿观众的行为。即使在疫情造成的前所未有的大量需求期间,DynamoDB 也能够为客户提供帮助,因为世界各地的许多客户不得不改变工作方式,需要以虚拟方式会面和开展业务。例如,当我们在 2020 年初开始进行视频通话时,Zoom 每天的会议参与者人数从 1000 万扩展到了 3 亿。
值此特别周年纪念日之际,欢迎参加我们 3 月 1 日在 Twitch 上举办的非凡在线活动。在这篇文章的最后,我会告诉您更多活动详情。但是,在谈论此活动之前,让我们借此机会回顾一下这项服务的起源,以及自 10 年前首次推出以来我们添加的主要功能。
DynamoDB 背后的发展历史
DynamoDB 的故事早在 10 年前发布之前就已经开始了。它始于 2004 年假日购物季期间 Amazon 电子商务平台出现的一系列故障。当时,Amazon 正从整体式架构过渡到微服务。过去的设计原则是(现在仍然一样),每个有状态微服务使用自己的数据存储,其他服务需要通过公开的 API 访问微服务的数据。直接访问数据库不再是一种选择方案。当时,大多数微服务都在使用第三方供应商提供的关系数据库。2004 年假日季的流量很大,因此数据库系统遇到了一些难以调试和难以重现的死锁问题。尽管我们使用的是简单的使用模式,例如仅按主键查询,但电子商务平台仍在将关系数据库推向极限。这些使用模式不需要关系数据库的复杂性。
在 Amazon 和 AWS,发生中断后,我们会启动一个名为纠错(COE)的流程,用于记录问题的根本原因,描述解决问题的方式,并详细说明为避免再次发生而进行的更改。在此数据库问题的 COE 期间,一位 20 岁的年轻实习生 Swaminathan(Swami)Sivasubramanian(现任 AWS 数据库、分析和 ML 组织副总裁)问了这样一个问题:“我们为什么要使用关系数据库? 这些工作负载不需要 SQL 级别的复杂性和事务性保证。”
这促使 Amazon 重新考虑其数据存储的架构,并构建了原始的 Dynamo 数据库。目标是满足 Amazon 电子商务平台对可扩展性和可靠性的苛刻要求。这个非关系型键值数据库最初针对的是 Amazon 电子商务运营的核心使用案例,例如购物篮和会话服务。
三年后,AWS 于 2007 年发布了 Dynamo 白皮书,描述了我们的设计原则,并提供了运行该数据库的经验,以支持 Amazon 的核心电子商务运营。多年来,我们看到出现了几个 Dynamo 克隆产品,这证明其他公司也在寻求可扩展的解决方案,就像 Amazon 一样。
几年后,Dynamo 由 Amazon 的几个核心服务团队所采用。他们的工程师对性能和可扩展性非常满意。但是,我们开始向工程师了解为什么 Dynamo 没有在 Amazon 内部得到更广泛的采用。我们了解到 Dynamo 为团队提供了所需的可靠性、性能和可扩展性,但并没有简化运行系统的操作复杂性。仍然需要团队在 Amazon 的数据中心安装、配置和操作系统。
当时,AWS 提议将 Amazon SimpleDB 作为 NoSQL 服务。尽管 SimpleDB 难以将域扩展到 10GB 以上、延迟不可预测(受数据库及其索引大小的影响)并且难以获得最终一致性模型,但许多团队仍然偏爱 SimpleDB 的操作简便性。
于是,我们得出结论,理想的解决方案是将 Dynamo 的优势(可扩展性和可预测的低数据检索延迟)与 SimpleDB 的操作简便性结合起来,只需声明一个表,让系统透明地处理低级别的复杂性。
DynamoDB 诞生了。
DynamoDB 将开发人员从复杂的硬件和软件管理中解放出来。它可以处理扩展分区的所有复杂性,并对数据进行重新分区以满足吞吐量要求。它可以无缝扩展,无需手动对表进行重新分区,并且提供可预测的低延迟数据访问(个位数毫秒级)。
在 AWS,我们推出新服务的那一刻并不意味着项目的结束。实际上是项目的开始。在过去的 10 年中,我们一直在倾听您的反馈,并在 DynamoDB 中添加了新功能。除了数百项持续改进之外,我们还增加了以下功能:
- 支持本地和全局二级索引,实现了更复杂的查询功能,而不会影响规模或可用性(2013 年 12 月)
- 可以使用 DynamoDB Streams 大规模捕获更改(2014 年 11 月),以及后来可以使用适用于 DynamoDB 的 Amazon Kinesis Data Streams 大规模捕获更改(2020 年 11 月)
- 能够创建全局表并跨 AWS 区域复制数据(2017 年 11 月)。这样,可以创建在多个区域中托管的双活应用程序。一个 DynamoDB 全局表由多个区域中的多个副本组成。当应用程序将数据写入一个区域中的副本表时,DynamoDB 会自动将写入操作传播到其他区域中的其他副本表。
- DynamoDB 提供备份和还原功能,用于长期保留,并支持归档以满足监管合规需求。(2017 年 11 月)
- 时间点恢复(PITR)。该功能支持备份表,并能够在任何时间使用完全一致的数据版本进行还原(2018 年 3 月)
- 自适应容量,允许无限期运行不均衡的工作负载(2018 年 8 月)
- 支持 ACID 事务(2018 年 11 月)
- 与 AWS Backup 集成(2021 年 11 月)
等等。
最后,在上次 AWS re:Invent 大会期间,我们宣布推出了 Amazon DynamoDB Standard-Infrequent Access(DynamoDB Standard-IA)。借助这个新的 DynamoDB 表类,可以将不常访问的数据的数据存储成本降低 60%。最适合需要长期保留的数据以及应用程序偶尔需要访问的数据,而不会延长访问延迟。过去,为了降低此类数据的存储成本,需要编写代码将不常访问的数据移至成本较低的备用存储,例如 Amazon Simple Storage Service(Amazon S3)。现在,您可以切换到 DynamoDB Standard-IA 表类来存储不常访问的数据,同时保持 DynamoDB 的高可用性和性能。
如何开始使用?
作为开发人员,要开始使用 DynamoDB,您可以参考我们文档中的入门指南,或阅读优秀作品 DynamoDB, Explained,该书由 Alex DeBrie 撰写,他是我们的 AWS 勇士之一,也是 The DynamoDB Book 的作者。为了深入了解 DynamoDB 数据建模,AWS 勇士 Jeremy Daly 正在准备一个视频课程“DynamoDB Modeling for the rest of us”。
现在,任何垂直行业、地理区域和公司规模的客户几乎都在使用 DynamoDB。您在 DynamoDB 上的创新方式一直令我们感到惊讶,而且您还在不断推动我们继续改进 DynamoDB,以便更轻松地构建下一代应用程序。我们将继续根据您的反馈反推工作,满足您不断变化的需求,并使您能够在未来几十年内继续创新并扩大规模。
DynamoDB 十年创新 – 虚拟活动
正如我在开始时提到的,我们也很乐意与您一起庆祝这个周年纪念日。我们准备了一场直播 Twitch 活动,可让您学习最佳实践、观看技术演示和参加现场问答。您将听到我们两位长期客户讲述的案例:SmugMug 首席执行官 Don MacAsKill 和 Dropbox 的工程负责人。此外,您还有机会向 AWS 的博客传奇人物、首席宣传官 Jeff Barr 以及 DynamoDB 的产品经理和工程师提问并与他们交谈。最后,AWS 勇士 Alex DeBrie 和 Jeremy Daly 将主持两场深入探讨技术会议。点击此处查看完整议程。
本活动将于 3 月 1 日在 Twitch 上直播,您现在可以立即报名。来自美国的前 1000 名报名用户将获得 The DynamoDB book 的免费电子版(零售价为 79 美元)。
期待 DynamoDB 的下一个 10 年。再见 🥂。