Azure Cosmos DB 批量执行程序库概述

适用范围: NoSQL

Azure Cosmos DB 是一种快速且灵活的多区域分布式数据库服务,通过弹性的横向扩展来支持以下功能:

  • 大型读取和写入吞吐量,每秒操作数百万次。
  • 存储大量事务和操作数据(数百 TB 级甚至更高),并具有可预测的毫秒级延迟。

批量执行程序库可助你使用极大的吞吐量和存储。 批量执行程序库允许通过批量导入和批量更新 API 在 Azure Cosmos DB 中执行批量操作。 可在以下部分中详细了解批量执行程序库的功能。

注意

目前,批量执行程序库支持导入和更新操作。 Azure Cosmos DB API 仅支持 NoSQL 和 Gremlin 帐户的此库。

重要

无服务器帐户目前不支持批量执行工具库。 在 .NET 上,建议使用 SDK V3 版本中提供的批量支持

批量执行程序库的主要功能

  • 使用批量执行工具库时,可以显著减少使分配给容器的吞吐量达到饱和所需的客户端计算资源。 在客户端计算机的 CPU 已饱和的情况下,使用批量导入 API 来写入数据的单线程应用程序实现的写入吞吐量是以并行方式写入数据的多线程应用程序的 10 倍。

  • 批量执行工具库抽象了编写应用程序逻辑的繁琐任务,以处理请求的速率限制、请求超时和其他暂时性异常。 它能在库中有效地处理它们。

  • 它为应用程序执行批量操作以横向扩展提供了一种简化的机制。在 Azure 虚拟机上运行的单个批量执行工具实例的消耗量可能超过 500 K RU/s。 可以通过在单个客户端虚拟机上添加更多实例来实现更高的吞吐量。

  • 批量执行工具库可以通过横向扩展体系结构在一小时内批量导入 1 TB 以上的数据。

  • 它可以作为修补程序批量更新 Azure Cosmos DB 容器中的现有数据。

批量执行程序如何进行操作?

对一批实体触发用于导入或更新文档的批量操作时,这些实体一开始会随机分布到与其 Azure Cosmos DB 分区键范围相对应的 Bucket 中。 在对应于分区键范围的每个存储桶中,它们被细分为小型批。

每个小型批都充当在服务器端提交的有效负载。 批量执行程序库在分区键范围的内外对并发执行小型批进行了内置的优化。

下图演示了批量执行程序如何将数据按批分成不同的分区键:

Diagram shows bulk executor architecture.

批量执行程序库可确保最大程度地利用分配给集合的吞吐量。 它使用适用于每个 Azure Cosmos DB 分区键范围的 AIMD 样式拥塞控制机制,可以有效地处理速率限制和超时。

有关使用批量执行工具库的示例应用程序的详细信息,请参阅使用批量执行工具 .NET 库在 Azure Cosmos DB 中执行批量操作对 Azure Cosmos DB 数据执行批量操作

有关参考信息,请参阅 .NET 批量执行工具库Java 批量执行工具库

后续步骤