评估将SQL服务器数据库迁移到 MongoDB Atlas 的查询性能 AWS - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

评估将SQL服务器数据库迁移到 MongoDB Atlas 的查询性能 AWS

由 Battulga Purevragchaa (AWS)、Krishnakumar Sathyanarayana(美国公司)和 Babu Srinivasan(MongoDB)创作 PeerIslands

环境:PoC 或试点

来源:微软SQL服务器

目标:MongoDB Atlas 或者 MongoDB Enterprise Advanced

R 类型:更换平台

工作负载:Microsoft

技术:数据库;迁移

Summary

这种模式为使用近乎真实的数据加载 MongoDB 以及评测尽可能接近生产场景的 MongoDB 查询性能提供指导。该评测提供的信息可帮助您规划从关系数据库迁移至MongoDB 的操作。该模式使用PeerIslands 测试数据生成器和性能分析器来测试查询性能。

这种模式对于 Microsoft SQL 服务器迁移到 MongoDB 特别有用,因为执行架构转换以及将数据从当前SQL服务器实例加载到 MongoDB 可能非常复杂。相反,在开始实际迁移之前,您可以将近乎真实的数据加载至 MongoDB,了解 MongoDB 的性能并微调架构设计。

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 熟悉 MongoDB Atlas

  • 目标 MongoDB 架构

  • 典型查询模式

限制

  • 数据加载时间和性能受到 MongoDB 集群实例大小限制。我们建议您选择适用于生产的实例,以了解实际性能。

  • PeerIslands 测试数据生成器和性能分析器目前仅支持在线数据加载和查询。尚不支持离线批处理(例如,使用 Spark 连接器将数据加载至 MongoDB)。

  • PeerIslands 测试数据生成器和性能分析器支持集合中的字段关系。它不支持跨集合关系。

产品版本

架构

目标技术堆栈

  • MongoDB Atlas 或 MongoDB Enterprise Advanced

架构

用于评估将SQL服务器数据库迁移到 MongoDB Atlas 的查询性能的架构。AWS

PeerIslands 测试数据生成器和性能分析器使用 Java 和 Angular 构建,并将其生成的数据存储在亚马逊 Elastic Block Store (亚马逊EBS) 上。该工具包含两个工作流:测试数据生成与性能测试。

  • 在测试数据生成中,您需要创建一个模板,该模板JSON表示必须生成的数据模型。创建模板后,您可按照负载生成配置的定义在目标集合中生成数据。

  • 在性能测试中,您可创建配置文件。配置文件是一种多阶段测试方案,您可以在其中配置创建、读取、更新和删除 (CRUD) 操作、聚合管道、每个操作的权重以及每个阶段的持续时间。创建配置文件后,您可根据配置对目标数据库运行性能测试。

PeerIslands 测试数据生成器和性能分析器将其数据存储在亚马逊上EBS,因此您可以使用任何 MongoDB 支持的连接机制(包括EBS对等互连、允许列表和私有终端节点)将亚马逊连接到 MongoDB。默认情况下,该工具不包含操作组件;但是,如果需要,可以将其配置为适用于 Prometheus 的亚马逊托管服务、亚马逊托管 Grafana、Amazon 和 Secrets Manager CloudWatch。AWS

工具

  • PeerIslands 测试数据生成器和性能分析器包括两个组件。测试数据生成器组件可帮您根据 MongoDB 架构生成高度针对客户的真实数据。该工具完全由用户界面驱动,包含丰富的数据库,可用于在 MongoDB 上快速生成数十亿条记录。该工具还提供在 MongoDB 架构中实现字段间关系的功能。Performance Analyzer 组件可帮助您生成高度针对客户的查询和聚合,并在 MongoDB 上执行真实的性能测试。您可以使用 Performance Analyzer 通过丰富的负载配置文件和针对特定用例的参数化查询来测试 MongoDB 性能。

最佳实践

请参阅以下资源:

操作说明

任务描述所需技能

了解当前SQL服务器源的数据库占用空间。

了解您当前的SQL服务器占用空间。这可以通过对数据库 INFORMATION 架构运行查询来实现。确定表数量和每个表的大小。分析每个表关联的索引。有关SQL分析的更多信息,请参阅 PeerIslands 网站上的博客文章 SQL2Mongo:数据迁移之旅

DBA

了解源架构。

确定表架构和数据的业务表示形式(例如邮政编码、名称和货币)。使用现有的实体关系 (ER) 图或者从现有数据库生成 ER 图。有关更多信息,请参阅 PeerIslands 网站上的博客文章 SQL2Mongo:数据迁移之旅

DBA

了解查询模式。

记录您使用的前 10 个SQL查询。你可以使用数据库中可用的 performance_schema.events_statements_summary_by_digest 表了解热门查询。有关更多信息,请参阅 PeerIslands 网站上的博客文章 SQL2Mongo:数据迁移之旅

DBA

了解SLA承诺。

记录数据库操作的目标服务级别协议 (SLAs)。常见衡量标准包括查询延迟和每秒查询次数。这些措施及其目标通常可在非功能需求 (NFR) 文档中找到。

DBA
任务描述所需技能

定义目标架构。

为目标 MongoDB 架构定义多种选项。有关更多信息,请参阅 MongoDB Atlas 文档中的 Schemas。根据表格关系考虑最佳实践与设计模式。有关详细信息,请参阅 MongoDB 文档中的数据模型示例和模式

MongoDB 工程师

定义目标查询模式。

定义 MongoDB 查询和聚合管道。这些查询等同于您为SQL服务器工作负载捕获的热门查询。要了解如何构造 MongoDB 聚合管道,请参阅 MongoDB 文档

MongoDB 工程师

定义 MongoDB 实例类型。

确定您计划用于测试的实例大小。有关指南,请参阅 MongoDB 文档

MongoDB 工程师
任务描述所需技能

设置 MongoDB Atlas 集群。

要在上设置 MongoDB 集群AWS,请按照 MongoDB 文档中的说明进行操作。

MongoDB 工程师

在目标数据库中创建用户。

按照 MongoDB 文档中的说明配置 MongoDB Atlas 集群以实现访问和网络安全。

MongoDB 工程师

在 Atlas 中创建相应的角色AWS并配置基于角色的访问控制。

如有需要,请按照 MongoDB 文档中的说明设置其他用户。通过AWS角色配置身份验证和授权

MongoDB 工程师

设置 Compass for MongoDB Atlas 访问。

设置 MongoDB GUI 指南针实用程序,便于导航和访问。

MongoDB 工程师
任务描述所需技能

安装测试数据生成器。

在您的环境中安装PeerIsland 测试数据生成器

MongoDB 工程师

配置测试数据生成器,以生成相应的数据。

使用数据库为 MongoDB 架构中的所有字段生成特定数据,从而创建模板。有关更多信息,请参阅 MongoDB 数据生成器和性能。分析器视频。

MongoDB 工程师

水平扩展测试数据生成器,以生成所需负载。

使用您创建的模板,通过配置所需并行度开始针对目标集合生成负载。确定生成必要数据的时间范围与规模。

MongoDB 工程师

验证 MongoDB Atlas 中的负载。

检查加载至 MongoDB Atlas 中的数据。

MongoDB 工程师

在 MongoDB 上生成所需索引。

根据查询模式定义所需索引 有关最佳实践,请参阅 MongoDB 文档

MongoDB 工程师
任务描述所需技能

在性能分析器设置负载配置文件。

通过配置特定的查询及其相应的权重、测试运行的持续时间和阶段,在 Performance Analyzer 中创建性能测试的配置文件。有关更多信息,请参阅 MongoDB 数据生成器和性能。分析器视频。

MongoDB 工程师

运行性能测试。

使用您创建的性能测试配置文件,通过配置所需并行度开始对目标集合进行测试。水平扩展性能测试工具,以对 MongoDB Atlas 运行查询。

MongoDB 工程师

记录测试结果。

记录查询 P95、P99 延迟。

MongoDB 工程师

调整架构与查询模式。

修改索引和查询模式,以解决任何性能问题。

MongoDB 工程师
任务描述所需技能

关闭临时AWS资源。

删除用于测试数据生成器与性能分析器的所有临时资源。

AWS管理员

更新性能测试结果。

了解 MongoDB 的查询性能,并将其与您的查询性能进行比较。SLAs如有必要,可微调 MongoDB 架构并重新运行该过程。

MongoDB 工程师

结束项目。

关闭项目并提供反馈。

MongoDB 工程师

相关资源

其他资源