使用 Amazon DynamoDB Streams 迁移到亚马逊 DynamoDB 时移除时态表和历史对象

客户有时会使用 Microsoft SQL Server 时态表或 Oracle Flashback 等专有数据库功能来存储和查询重要表中的历史数据或记录内容的变化轨迹。

时态表是一项数据库功能,内置支持提供有关存储在任何时间点表中的数据的信息,而不仅仅是当前时刻的数据,当关系数据库管理系统 (RDBMS) 未提供时,开发人员通常会设置触发器和存储过程来填充历史表。时态表会增加数据库中对象的数量,从而增加数据库大小和运营开销,包括长期维护、监控和数据迁移的复杂性。

在这篇文章中,我们将分析客户的历史表用例,并讨论如何迁移到 Amazon DynamoD B 并使用 Amazon D ynamoDB Stream s 捕获变更数据,从而减少对象数量和数据库大小,而不必依赖管理时态表。

用例概述

亚马逊数据库迁移加速器 (Amazon DMA) 帮助客户加快向亚马逊云科技数据库和分析 (DB&A) 服务的迁移。我们通过提供补充的迁移咨询服务来实现这一目标,这些服务包括制定迁移策略和计划、制定迁移解决方案、解锁持续的停滞/延迟迁移,并与DB&A服务团队分享有关迁移工具和服务改进的反馈,从而通过自动化简化迁移体验。我们充当路由职能,将迁移解决方案移交给客户的迁移实施选择(proServe/APN 合作伙伴或客户的内部迁移团队)执行,并将继续与客户和 proServe/APN 合作伙伴(如果有)保持接触,直到工作负载在 亚马逊云科技 DB&A 服务上线,以确保成功迁移。

我们的团队最近运行了概念验证 (PoC),将客户的 Oracle 数据库迁移到 DynamoDB。他们有一个剪贴板框架,其中包含来自多个需要临时存储的应用程序的文件。该框架将 Oracle RDBMS 数据库设置为元数据存储,表中保存了所有文件详细信息和访问相关信息。这些核心表具有插入、更新和删除触发器,用于填充所有任务的历史表。随着时间的推移,大量内部应用程序开始使用这些历史表和单一数据库,从而提高了对高可用性的要求并增加了运营开销。

在迁移之前,应用程序的数据库包括四个包含核心数据的表和四个相关的历史表。核心表格有八个触发器来填充相关的历史表:四个用于更改之前,四个用于更改之后。数据库的总大小超过 20 GB。核心元数据表在任何给定时间都有 15,000 到 20,000 行,最多占用 400 MB,而历史表占用剩余的 17 GB。

在考虑将该框架迁移到 亚马逊云科技 时,我们确定了以下关键的优化领域:

  • 简化当前的架构和数据库设计
  • 将数据库从商业供应中迁移到可用性高、成本较低的目标
  • 通过维护确保在迁移和未来的可扩展性方面付出最少的努力
  • 制定无缝的数据迁移和过渡计划
  • 启用优化的审计、日志记录和变更跟踪功能

回顾这些主题后,很明显,客户需要更好的解决方案来满足其历史表要求,DynamoDB 被选为最适合迁移和现代化的目标,因为它符合高可用性和高吞吐量要求。使用 DynamoDB,无需预置、修补或管理服务器,也无需安装、维护或操作软件。DynamoDB 可自动扩展表以调整容量并保持性能,无需管理和零停机维护。内置可用性和容错功能,无需为这些功能设计应用程序。DynamoDB 提供内置安全性,默认情况下会加密所有数据,还与 亚马逊云科技 身份和访问管理 (IAM) 集成以管理访问权限并实施精细的身份和访问控制。

DynamoDB Streams 是一项重要的内置功能,我们将在下次会话中讨论,它消除了对触发器和历史表的需求,极大地简化了数据库。

DynamoDB 流对元数据表的好处

DynamoDB Streams 可在任何表中捕获按时间顺序排列的项目级修改序列,并将这些信息存储在日志中长达 24 小时。应用程序可以访问此日志,并以近乎实时的方式查看修改前后的数据项。元数据表可能包含有关存储库中文件、照片和对象等其他数据的信息。在这种情况下,元数据表包含有关各种应用程序为临时目的而存储的文件的信息。它还支持近乎实时地流式传输项目级变更数据捕获记录。您可以构建使用这些流的应用程序,并根据内容采取行动,而无需编写任何代码。您可以配置 DynamoDB 流以捕获不同深度的变更详细信息:

  • KEYS_ONL Y — 仅限修改后物品的关键属性
  • NEW_IMAGE — 整个项目,就像修改后显示的那样
  • OLD_IMAGE — 整个项目,如修改前所示
  • NEW_AND_OLD_IMAGE S — 商品的新图片和旧 图片

有关更多信息,请参阅 DynamoDB 流用例和设计模式

将 DynamoDB 流用于元数据表将包括以下核心要求:

  • 记录 -记录所做的所有更改
  • 审计 -跟踪一段时间内对数据所做的所有更改

DynamoDB Streams 记录可通过其自己的 API 进行访问。要进行长期存储,您可以使用亚马逊 Kines is Data Firehose 将记录上传到 亚马逊简单存储服务 (亚马逊 S3)或 亚马逊 CloudWatc h L o gs。 每个 DynamoDB 流都有自己的 亚马逊资源名称 (ARN)。使用单独的安全权限并将数据库访问与流访问分开,使整体设计成为高度安全的架构。传统上,获得数据库访问权限的用户可以篡改元数据及其历史表以清除其痕迹。使用新的架构,这种篡改是不可能的,因为隔离的数据和流记录的权限是分开的。

移民和现代化

因为这是对数据库和工作流程的重大转变,但又使应用程序的所有方面都保持无缝连接,因此我们建立了一个并行运行系统,旧的应用程序堆栈不受干扰,旧文件和元数据保留在 RDBMS 上。

所有 亚马逊云科技 服务和数据都是在安全的 亚马逊虚拟私有云 (Amazon VPC) 中配置的,并遵循了 亚马逊云科技 最佳实践,并考虑了所有基础设施安全措施。我们建议使用在安全的非生产环境中配置的所有测试的非生产样本数据,就像我们配置服务一样。有关更多信息,请参阅 安全、身份和合规性 最佳实践

架构概述

下图说明了原始架构。

下游应用程序与框架端点进行交互,框架端点将所有元数据写入本地 Oracle 数据库并管理文件存储中的文件。

下图说明了过渡架构。

遵照 亚马逊云科技 最佳实践并考虑所有基础设施安全措施,在旧数据库前部署了 应用程序负载均衡器 (ALB),以在逻辑基础上处理和转移查询。

无论使用哪种底层数据库,所有应用程序都通过 ALB 进行数据库查询。所有插入内容都指向新的 DynamoDB 表,旧的 Oracle 表用作更新和删除旧数据的临时表。并行系统一直运行到 Oracle 核心表中的所有数据都被清理干净,之后旧系统停用。此迁移不需要对 40 个下游应用程序进行任何更改,因为 ALB 会根据下游应用程序请求的操作在逻辑上转移流量。

下图说明了最终的新架构。

我们在每个带有单个 ARN 的新核心元数据表上激活了 DynamoDB 流。每个流都由 ARN 唯一标识,用于 API 查询或唯一标识。

我们添加了 A WS L am bda 函数,用于将所有新的 DynamoDB 流条目移动到亚马逊 S3 存储桶中的单个文件中。该存储分区有其专用的安全设置,与 DynamoDB 数据库分开,可实现良好的角色分离。我们进行了一些示例元数据更改,以确保成功创建审计文件。

有关包含示例代码的完整教程,请参阅教 程:使用 DynamoDB 流和 Lambda 处理新项目

存储 DynamoDB 流数据的替代方法

在本节中,我们将讨论存储 DynamoDB Streams 数据的替代方法及其各自的架构。

一种选择是直接通过专用 API 访问 DynamoDB 流。

另一种选择是使用 亚马逊简单通知服务 (Amazon SNS) 进行近乎实时的通知 或消息。有关更多信息,请参阅 DynamoDB 流用例和设计模式

您还可以使用 亚马逊 Kines is Data Streams 将 DynamoDB Streams 数据存储到其他存储服务。 有关更多信息,请参阅 如何使用 Amazon DynamoDB 流在应用程序之间执行有序数据复制

进一步的增强

由于此应用程序的文件存储在 Amazon S3 上,因此您可以利用 DynamoDB 生存时间 (TTL) 功能并消除框架删除文件的开销。DynamoDB TTL 使您能够自动从表格中删除过期的项目,无需支付额外费用。有关更多信息,请参阅 使用 DynamoDB 生存时间 (TTL) 使项目过 期

结论

在这篇文章中,我们分享了一个现代化用例,其中一家金融机构(保险)公司从使用 RDBMS 转向存储元数据,而是使用 Amazon DynamoDB 实施了解决方案。

在此用例中,使用 DynamoDB Streams 可移除超过 66% 的辅助对象,将数据库减至其原始大小的 20%,从而帮助客户降低了 30% 的成本。另一个好处是通过减少管理历史表的管理费用来腾出操作资源时间,从而降低管理成本。

像 DynamoDB 这样的 NoSQL 数据库可以让您摆脱 RDBMS 数据库的限制,并允许您在需要时仅向一小部分数据添加其他列。所有剩余的数据集及其结构都无需更改或测试。这可以大大减少您的应用程序编码和测试工作。

亚马逊云科技 提供最广泛的专用数据库选择,使您能够更快地保存、增长和创新。有关更多信息,请参阅 在 亚马逊云科技 上使用免费数据库 构建现代应用程序 。要开始使用 DynamoDB,请参阅 Dyn amoDB 开发者指南


作者简介

Paurav Chudasama 亚马逊 D MA 的业务发展专家,负责欧洲、中东和非洲。他是加速数据库迁移和向 亚马逊云科技 工作负载现代化的最佳实践、工具和方法的关键影响者。过去,Paurav 开发了 亚马逊云科技 专业服务 (ProServe) 套装产品、工具和文档,为顾问、亚马逊云科技 合作伙伴和客户提供技术指导,帮助他们将本地数据库迁移到 亚马逊云科技,并将商业数据库大规模现代化为开源。

Ivan Cardoso 亚马逊 DM A 的解决方案架构师和数据库迁移主题专家,涵盖欧洲、中东和非洲。Ivan 在商业、开源和专用数据库迁移方面拥有经验,他与客户和合作伙伴合作,将工作负载从交易和分析环境迁移到 亚马逊云科技。

Pratik Chunawala 是 AW S 专业服务部迁移和现代化全球专业实践的高级云基础设施架构师。Pratik 领导美洲的云迁移工厂解决方案,并与全球客户合作,简化大规模迁移的规划和执行。工作之余,普拉蒂克在卡内基梅隆大学做客座讲座,并在纽约大学的STEM领域女性校友委员会担任男性盟友,与学生讨论云安全、安全迁移和行业用例。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。