将非关系数据库中的 vCore 或 vCPU 数转换为 Azure Cosmos DB RU/s

适用范围: NoSQL

适用对象: MongoDB

本文说明在考虑数据迁移,但是只知道现有数据库副本集中的 vCore 或 vCPU 总计数时,如何估算 Azure Cosmos DB 请求单位 (RU/s)。 将一个或多个副本集迁移到 Azure Cosmos DB 时,这些副本集中保存的每个集合都会存储为 Azure Cosmos DB 集合(由具有 4x 复制因子的分片群集组成)。 可在此分区和缩放指南中详细了解我们的体系结构。 请求单位是在集合上预配吞吐量容量的方式;可以阅读请求单位指南和 RU/s 预配指南以了解详细信息。 迁移集合时,Azure Cosmos DB 会预配足够的分片,以便为预配的请求单位提供服务并存储数据。 因此在迁移之前,为集合估算 RU/s 是确定计划 Azure Cosmos DB 数据资产规模的重要步骤。 根据我们与数千个客户合作的经验,我们发现以下公式可帮助我们通过 vCore 或 vCPU 数得出大致的起始 RU/s 估算值:

Provisioned RU/s = C*T/R

  • T:现有数据库数据承载副本集中的 vCore 和/或 vCPU 总数。
  • R:现有数据承载副本集的复制因子。
  • C:每个 vCore 或 vCPU 的建议预配 RU/s。 此值派生自 Azure Cosmos DB 的体系结构:
    • C = 600 RU/s/vCore* for Azure Cosmos DB for NoSQL
    • C = 1000 RU/s/vCore* for Azure Cosmos DB for MongoDB v4.0
    • 目前无法提供 API for Cassandra、API for Gremlin 或其他 API 的 C 估算值

上面提供了 C 的值。 必须通过检查现有数据库的每个数据承载副本集中的 vCore 或 vCPU 数并求和获取总数来确定 T;如果无法估算 T,请考虑按照我们使用 Azure Cosmos DB 容量规划器估算 RU/s 的指南(而不是本指南)。 T 不应包含与现有数据库路由服务器或配置群集关联的 vCore 或 vCPU(如果具有这些组件) 。

对于 R,建议插入数据库副本集的平均复制因子;如果此信息不可用,则 R=3 是一个良好的经验法则 。

Azure Cosmos DB 互操作 API 在 API for NoSQL 的基础上运行并实现自己独特的体系结构;因此,Azure Cosmos DB for MongoDB v4.0 的 C 值与 Azure Cosmos DB API for NoSQL 不同。

工作示例:为单个副本集迁移估算 RU/s

Migrate a replica set with 3 replicas of a four-core SKU to Azure Cosmos DB

考虑基于四核服务器 SKU 且复制因子为 R=3 的单个副本集。 Then

  • T = 12 个 vCore
  • R = 3

然后 Azure Cosmos DB API for NoSQL 的建议请求单位是

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (12 vCores) / (3) = 2,400 RU/s

Azure Cosmos DB for MongoDB 的建议请求单位是

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (12 vCores) / (3) = 4,000 RU/s

工作示例:在迁移同类副本集的群集时估算 RU/s

Migrate a homogeneous sharded replica set with 3 shards, each with three replicas of a four-core SKU, to Azure Cosmos DB

考虑由三个副本集组成的分片复制群集,每个副本集的复制因子都是三,其中每台服务器都是四核 SKU。 Then

  • T = 36 个 vCore
  • R = 3

然后 Azure Cosmos DB API for NoSQL 的建议请求单位是

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (36 vCores) / (3) = 7,200 RU/s

Azure Cosmos DB for MongoDB 的建议请求单位是

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (36 vCores) / (3) = 12,000 RU/s

工作示例:在迁移异类副本集的群集时估算 RU/s

Migrate a heterogeneous sharded replica set with 3 shards, each with different numbers of replicas of a four-core SKU, to Azure Cosmos DB

考虑由三个副本集组成的分片复制群集,其中每台服务器都基于四核 SKU。 这些副本集之所以是“异类”,是因为各自具有不同的复制因子:分别为 3x、1x 和 5x。 建议方法是在计算请求单位时使用平均复制因子。 Then

  • T = 36 个 vCore
  • R 平均值 = (3+1+5)/3 = 3

然后 Azure Cosmos DB API for NoSQL 的建议请求单位是

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (36 vCores) / (3) = 7,200 RU/s

Azure Cosmos DB for MongoDB 的建议请求单位是

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (36 vCores) / (3) = 12,000 RU/s

有关获取最准确 RU/s 估算值的提示

从云托管数据库迁移:如果当前使用云托管数据库,则这些服务通常表现为以 vCore 或 vCPU 数为单位(即 T )进行预配,但实际上预配的核心计数对于 R 节点副本集会设置 vCore/副本或 vCPU/副本值 (T/R);实际核心数是显式预配值的 R 倍 。 建议确定此说明是否适用于当前云托管数据库,如果适用,则必须将预配的 vCore 或 vCPU 名义数量乘以 R,才能获取 T 的准确估算值 。

vCore 与 vCPU:在本文中,我们将“vCore”和“vCPU”视为同义词,因此 C 的单位为 RU/s/vCore 或 RU/s/vCPU,两者没有区别 。 但在实践中,这种简化在某些情况下可能并不准确。 这些术语可能具有不同的含义;例如,如果物理 CPU 支持超线程,则可能 2 个 vCPU = 1 个 vCore w/HT 或是其他情况。 通常,vCore/vCPU 关系依赖于硬件,建议对现有群集硬件调查该关系是怎样的,以及是根据 vCore 还是 vCPU 预配群集计算 。 如果 vCPU 和 vCore 在硬件上的含义不同,则建议将以上 C 估算值视为采用 RU/s/vCore 单位,并在必要时使用适合于硬件的转换因子将 T 从 vCPU 转换为 vCore 。

总结

通过 vCore 或 vCPU 估算 RU/s 需要从现有数据库副本集收集有关 vCore/vCPU 总数和复制因子的信息。 随后可以使用 vCore/vCPU 和吞吐量之间的已知关系来估算 Azure Cosmos DB 请求单位 (RU/s)。 得出此请求单位估算值是预测迁移后 Azure Cosmos DB 数据资产规模的重要步骤。

下表总结了 Azure Cosmos DB API for NoSQL 和 API for MongoDB v4.0 的 vCore 和 vCPU 之间的关系:

vCore 数 RU/s (API for NoSQL)
(复制因子=3)
RU/s (API for MongoDB v4.0)
(复制因子=3)
3 600 1000
6 1200 2000
12 2400 4000
24 4800 8000
48 9600 16000
96 19200 32000
192 38400 64000
384 76800 128000

后续步骤