本页介绍Relational Migrator数据迁移基准测试结果,并根据这些结果提供建议。您可以使用这些结果和建议来估计迁移时间表,选择适当的基础架构配置,并为您的关系型数据库到MongoDB 的迁移规划资源需求。
基准测试概述
Relational Migrator基准测试根据以下因素测量迁移性能:
模式映射复杂性
关系数据库大小
关系数据库存储类型
Relational Migrator实例配置
MongoDB Atlas配置
基准测试使用了MongoDB Atlas和 AWS 基础设施。但是,性能模式和建议广泛应用于其他云提供商和本地部署部署。要详细学习;了解基准中使用的基础架构,请参阅 基准配置。
模式映射复杂性
Relational Migrator允许您将关系模式转换为文档模型。以下术语描述了基准测试使用的不同MongoDB模式映射复杂性:
复杂程度 | 说明 |
|---|---|
一对一 | 与您的关系模式相匹配的MongoDB模式:每个表都映射到一个MongoDB集合,每一行都映射到一个文档。最少使用高级功能。 |
嵌入式映射 | 包含一些嵌入式数组或嵌入式文档的MongoDB模式。最多两层嵌套文档。 |
高级 | 使用许多高级功能的MongoDB模式可能会增加迁移时间。以下是一些高级功能的示例:
高级模式最多包含三层嵌套文档。 |
要学习;了解有关将关系数据映射到MongoDB模式的更多信息,请参阅 数据建模。
基准配置
下表描述了基准测试中使用的每个组件的配置:
组件 | 配置 |
|---|---|
源数据库 (Oracle) |
Oracle实例被隔离,仅接收来自Relational Migrator实例的流量。 |
Relational Migrator |
|
目标数据库 (MongoDB Atlas) |
|
基准测试结果
下表显示了基准测试的结果。基准测试使用Atlas用户界面或 mongostat 来监控文档指标。Average Throughput (MB/s) 列四舍五入到小数点后两位。Cluster Documents/s 列四舍五入到最接近的每秒一万个文档。对于长时间运行的 One-to-one 迁移,Cluster Documents/s 列提供了由于基准测试期间的速度变化而观察到的下限和上限。
注意
在基准测试期间, Oracle数据库未显示明显的 CPU 或RAM使用量。
数据库大小 | 映射复杂性 | Oracle RDS 存储类型 | Atlas集群层 | 迁移持续时间 | 平均吞吐量(MB/秒) | 集群文档数 |
|---|---|---|---|---|---|---|
10 GB | 一对一 | gp2 | M60 | 15 分钟 | 11.11 | 80,000 (insert) |
10 GB | 嵌入式映射 | gp2 | M60 | 37 分钟 | 4.50 | 80,000 (insert), 40,000 (update) |
10 GB | 高级 | gp2 | M60 | 47 分钟 | 3.55 | 90,000 (insert), 40,000 (update) |
100 GB | 一对一 | gp3 | M60 | 2 小时 31 分钟 | 11.04 | 80,000 至 100,000(插入) |
100 GB | 嵌入式映射 | gp3 | M80 | 16 小时 25 分钟 | 1.69 | 90,000 (insert), 40,000 (update) |
100 GB | 高级 | gp3 | M140 | 15 小时 47 分钟 | 1.76 | 90,000 (insert), 40,000 (update) |
1 TB | 一对一 | IOPS固态硬盘 | M60 | 30 小时 50 分钟 | 9.01 | 85,000 至 100,000(插入) |
Relational Migrator始终以一系列insert操作开始,以写入根文档。然后,它使用 update 操作插入嵌入式文档或嵌入式数组。因此,One-to-one 基准测试结果仅包含插入操作,而 Embedded Mappings 和 Advanced 结果同时包含插入和更新操作。
性能估算
根据基准测试结果, Relational Migrator大约可以迁移:
一对一模式为 21 GB/小时。
7 GB/小时,适用于具有最多两级嵌入式映射的模式。
一对一模式的数据库迁移速度近似为线性。示例,一对一 100 GB迁移所需时间大约是一对一 10 GB迁移的10 倍。
更复杂模式的迁移速度不会与数据库大小呈线性扩展。模式中的嵌入式文档、嵌入式数组和其他功能越多,迁移速度就越慢。
建议
推荐配置
下表提供了根据源数据库大小和映射复杂性推荐的Atlas 集群层和 AWS RDS存储类型。
源数据集大小 | 映射复杂性 | 推荐的Atlas集群层 | 推荐的 AWS RDS 存储类型 |
|---|---|---|---|
0-50 GB | 一对一 | M60 | gp2 |
0-50 GB | 嵌入式映射 | M60 | gp2 |
0-50 GB | 高级 | M60 | gp2 |
50 GB-300 GB | 一对一 | M60 | gp3 |
50 GB-300 GB | 嵌入式映射 | M80 | gp3 |
50 GB-300 GB | 高级 | M80 | gp3 |
300 GB-1 TB | 一对一 | M60 | gp3 |
300 GB-1 TB | 嵌入式映射 | M140 | IOPS固态硬盘 |
300 GB-1 TB | 高级 | M140 | IOPS固态硬盘 |
1 TB+ | 一对一 | M60 | IOPS固态硬盘 |
1 TB+ | 嵌入式映射 | M200 | IOPS固态硬盘 |
1 TB+ | 高级 | M200 | IOPS固态硬盘 |
尽管该表指定了MongoDB Atlas和 AWS RDS 配置,但您可以应用这些建议应用于其他云提供商和自管理部署。要学习与给定MongoDB Atlas 集群层相关的基础架构配置的更多信息,请参阅云提供商。要学习;了解有关 AWS RDS存储类型的更多信息,请参阅 AWS RDS 存储类型文档。
优化网络延迟
为了最大限度地减少网络延迟,请确保源数据库、 Relational Migrator和目标集群在同一数据中心运行。
监控瓶颈
要优化迁移性能,监控指标以识别性能瓶颈。最佳实践是在识别性能瓶颈时遵循数据流向:首先监控源数据库,然后转向Relational Migrator,最后监控目标集群。
源数据库瓶颈
如果您发现读取 IOPS 较低 (< 50),则源数据库可能是瓶颈。请考虑采取以下操作来提高源数据库性能:
AWS RDS:使用
Provisioned IOPS或升级存储类型。本地部署:为提高性能,您可能需要升级物理存储,或迁移到性能更高的存储解决方案。
Relational Migrator瓶颈
如果您发现Relational Migrator实例上的 CPU 和RAM已充分利用,则Relational Migrator是瓶颈。请考虑增加实例大小以提高迁移性能。
以下测试结果显示了增加Relational Migrator实例vCPU 数量和RAM对迁移性能的影响:
源数据库大小 | 映射复杂性 | 16 vCPU、32 GB RAM持续时间 | 32 vCPU、64 GB RAM持续时间 | 改进 |
|---|---|---|---|---|
10 GB | 一对一 | 15 分钟 | 15 分钟 | 0% |
10 GB | 嵌入式映射 | 50 分钟 | 37 分钟 | 26% |
10 GB | 高级 | 63 分钟 | 47 分钟 | 25.40% |
100 GB | 一对一 | 3 小时 34 分钟 | 2 小时 31 分钟 | 29.44% |
100 GB | 嵌入式映射 | 18 小时 24 分钟 | 16 小时 25 分钟 | 10.78% |
100 GB | 高级 | 16 小时 35 分钟 | 15 小时 47 分钟 | 4.82% |
1 TB | 一对一 | 45 小时 20 分钟 | 30 小时 50 分钟 | 31.99% |
当Relational Migrator实例成为瓶颈时,增加 vCPU 数量和RAM可使性能提高 25-30%。
目标数据库瓶颈
如果您发现与基准结果表相比,文档插入或更新率较低,则MongoDB 集群可能是瓶颈。请考虑采取以下操作来提高迁移性能:
增加预配 IOPS
增加 vCPU 或RAM
增加集群层
如果您发现更新由于复制延迟而受到限制,则增加预配 IOPS 对迁移性能的影响最大。