Amazon 在2007年发布的 Dynamo 论文被认为是 NoSQL 数据库的开篇之作,并在之后的十几年间对 NoSQL 的发展产生了至关重要的影响。在2012年,源自 Amazon Dynamo 论文的 DynamoDB 正式上线,开始向亚马逊云科技的客户提供了一项兼备极致性能与扩展性的云原生数据库服务。在刚刚结束的云原生数据库十周年在线大会上,我们一同回顾了 DynamoDB 在十年间的发展,Amazon DynamoDB 在游戏、广告、可穿戴设备、智能家居和互联网软件等行业中帮助大批客户实现了向全球互联网扩展的目标。
DynamoDB 作为云原生的无服务架构数据库服务,不仅为用户提供了极致的弹性、可用性和性能,还提供了全局表、事务支持和本地部署测试等特性,帮助用户满足在更高要求场景下的需求。
Amazon DynamoDB 是一个键/值和文档数据库,可以在任何规模的环境中提供个位数的毫秒级性能。它是一个完全托管、多区域、多活的持久数据库,具有适用于 Internet 规模应用程序的内置安全性、备份和恢复以及内存缓存。DynamoDB 每天可处理超过 10 万亿个请求,并可支持每秒超过 2000 万个请求的峰值。
许多全球发展最快的企业,如 Lyft、Airbnb 和 Redfin,以及 Samsung、Toyota 和 Capital One 等企业,都依靠 DynamoDB 的规模和性能来支持其关键任务工作负载。数十万亚马逊云科技客户选择 DynamoDB 作为键值和文档数据库,用于其移动、Web、游戏、广告技术、物联网以及其他需要任何规模下的低延迟数据访问的应用程序。为您的应用程序创建一个新表,其他的交给 DynamoDB。
任意规模下的极致性能
DynamoDB 通过在任意规模环境中提供一致的个位数毫秒响应时间,支持世界上一些最大规模的应用程序。您可以构建吞吐量和存储空间几乎无限的应用程序。DynamoDB 全局表可跨多个亚马逊云科技区域复制您的数据,使您能够快速在本地访问全局分布的应用程序的数据。对于需要以微秒级延迟执行更快访问的使用案例,DynamoDB Accelerator (DAX) 提供了完全托管的内存缓存。
无需管理服务器
DynamoDB 是无服务器服务,无需预配置、修补或管理服务器,也不需要安装、维护或操作软件。DynamoDB 可自动纵向扩展和缩减表,以针对容量做出调整并保持性能。由于内置了可用性和容错能力,您无需为这些功能构建应用程序。DynamoDB 提供预配置和按需容量模式,使您能够通过指定每个工作负载的容量或只为您使用的资源付费,从而优化成本。
企业级特性支持
DynamoDB 支持 ACID 事务,使您能够大规模构建业务关键型应用程序。DynamoDB 默认加密所有数据,并为您的所有表提供细粒度的身份和访问控制。您可以立即创建数百 TB 数据的完整备份,而不会对您的表性能产生影响,并且可以恢复到先前的 35 天内的任何时间点,而无需停机。您还可以将 Amazon DynamoDB 表数据导出到 Amazon S3 中的湖内数仓,以执行任意规模的分析。DynamoDB 还提供有服务级别协议,从而确保可用性。
游戏公司将 DynamoDB 应用于游戏平台的各种功能中,包括游戏状态、玩家数据、会话历史记录和排行榜。这些公司从 DynamoDB 获得的主要优势是能够可靠扩展到数百万并行用户和需求,同时确保保持一致的个位数毫秒级低延迟。此外,作为完全托管服务,DynamoDB 极大的减少了运维成本,因此游戏开发人员可以专注于开发游戏本身而不是管理数据库方面。此外,由于越来越多的开发人员希望从单个亚马逊云科技区域扩展到多个亚马逊云科技区域,他们可以依赖 DynamoDB 多区域全局表进行双向活动的数据复制。
总部设在芬兰的 Supercell 公司,由 6 位游戏业的资深人士于 2010 年创建,是全球发展最迅猛的社交游戏公司之一。该公司拥有 100多名员工,开发的三款游戏取得了极大的成功,每天吸引着数千万使用 iOS 和 Android设备的玩家。这三款游戏是《卡通农场》(一款社交农场游戏)、《部落冲突》和《海岛奇兵》。
“对于像我们这样的可扩展性和速度至关重要的使用案例来说,Amazon DynamoDB 是不错的选择,”Supercell 服务主管 Sami Yliharju 说道。
Frontier Developments 使用 DynamoDB 部署在全球范围内销售和发行的跨 PC 和控制台等平台的 MMO 体验。在多达825000(而且仍在不断增加)名精英危机四伏玩家之间,每一名玩家所执行的每项操作都在推动着这款综合游戏的故事发展,这也给数据库带来了巨大的并发压力。
“我们获得了 4000 亿个星系以及数量不断增加的玩家。我们对该数据集的读写数量充满信心,因为这依赖于此时此刻在线的玩家。可以说,它非常适合 DynamoDB。我们将它纳入 DynamoDB,负责应对我们的存储扩展。”- Dav Stott,Elite Dangerous 高级服务器开发工程师。
Zynga 是世界上最成功的手机游戏公司之一,拥有众多热门游戏 — 包括 Words With Friends、Zynga Poker 和 FarmVille 等等,迄今为止,全球已有超过10 亿玩家安装了这些游戏。Zynga 通过将游戏 Poker Game 从 MySQL 迁移到了完全托管的 Amazon DynamoDB 上,节约了大量的运营开销,同时获得了巨大的性能提升,之前需要30秒的查询现在需要一秒钟就可以完成。
智能家居/智能设备公司借助 DynamoDB 来满足高并发和免运维的需求。全球数千万的智能终端需要同时发送数据,在数据库侧产生大量的并发和存储压力,DynamoDB 可以提供传统数据库服务不具备的极致弹性和一致性能,帮助我们的用户完全专注于业务系统本身的开发,实现快速部署、稳定可靠、隐私安全、弹性运营的目标。
华米科技成立于2013年,是一家基于云的健康服务提供商,拥有全球卓越的智能可穿戴技术,所生产的智能可穿戴设备在全球已经拥有近1亿用户。
华米科技健康云为整个健康生态的运营提供稳定的基础支撑服务和增值服务,每天要完成百亿级别的请求量、TB 级别的数据存储需求,不仅需要存储的数据量巨大,同时也必须保证极高的数据安全性和低延迟响应。在使用亚马逊云科技之前,这项任务面临的最大挑战是稳定性无法保证。通过迁移到 DynamoDB 作为核心数据库,华米科技顺利地解决了这一难题,实现了数据存储的安全、稳定、可靠和低延迟。DynamoDB 的最大好处是在任何规模下都能提供延迟不超过10毫秒的一致响应时间,可以用来构建具有无限吞吐量和存储空间的应用程序,很好地满足了华米科技健康云的数据存储需求。
天和荣也是一家国内著名的智能家居厂商,2017 年,天和荣的产品即视通已经进入了全球各大主要地理区域的市场,随之产生的一个需求就是在各个区域为即视通云服务的客户提供一致的使用体验。2019年,天和荣开始将 Serverless(无服务器)的理念运用在现有架构中。DynamoDB 和 Lambda 等服务的使用,一方面让后端服务更细粒度,减少了后端各部分之间的干扰,保证服务稳定性;另一方面,在运维层面也更加精细化,包括扩缩容、计费等都能精细化到100毫秒的水平,使成本估算更加方便。
媒体和娱乐公司借助 DynamoDB 来满足高吞吐量以及并行、低延迟和可靠性需求。DynamoDB 支持弹性扩展,可处理过多负载并维持低延迟,满足视频流和交互内容等实时场景中的重要需求。在这些场景中,并行用户的数量可能会达到数百万,没有其他任何数据库能够像 DynamoDB 一样顺利处理这种并行任务。无论是检索媒体还是参与实时性交互活动,都可在保持高并行性的同时保持低延迟,并为每位用户提供优化用户体验。这些公司利用 DynamoDB 解决其扩展问题,并专注于功能开发而不是数据库管理工作。
Disney+ 是全球最大的在线视频流式传输平台之一,于 2019 年 11 月推出,是 Disney、Pixar、Marvel、Star Wars 和 National Geographic 影视内容的主要播放平台。Disney+ 直接向 1亿多位订阅者提供丰富的数字内容库,而 Amazon DynamoDB 是支持这一全球性服务的技术之一。
Disney+ 背后的内容发现团队使用 DynamoDB 全局表进行扩展并提供热门功能,如“继续观看”、“观看列表”和“个性化推荐”。
Dropbox 是一家云同步公司,可以帮助用户在不同的终端之间同步数据。
Dropbox 在其本地 MySQL 元数据存储中遇到容量不足的问题,需要迁移或删除数 TB 的元数据以避免存储成本翻倍。该公司迅速建立原型,并将冷热元数据迁移到使用 Amazon DynamoDB 和 Amazon S3 构建的新存储系统。该系统的存储容量目前为 300TB,之后会不断增长。Amazon DynamoDB的将该系统的查询能力提高到每秒600,000次,同时通过使用 Amazon DynamoDB 和 Amazon S3 为 Dropbox 节省了数百万美元的扩展成本,并显著降低了每用户 GB 的成本。
创新还在继续。在全球云计算技术盛会——亚马逊云科技 re:Invent 2021上,亚马逊云科技继续为 Amazon DynamoDB 提供了 Standard-Infrequent Access 标准不频繁访问表类,帮助用户在历史归档数据场景下进一步节约高达60%的成本。我们也兴奋的看到越来越多的用户开始通过亚马逊云科技开启云上创新之旅。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。