批量数据加载最佳实践

仅与 Cloud Firestore 企业版相关。

本页介绍了使用 mongoimport 等工具将数据批量加载到与 MongoDB 兼容的 Cloud Firestore 中的最佳实践。

Cloud Firestore 是一种高度分布式的系统,可自动扩缩以满足您的业务需求。Cloud Firestore 根据系统接收的负载动态拆分和合并数据。

基于负载的拆分会自动进行,无需任何预配置。与其他的文档数据库相比,Cloud Firestore基于负载的拆分系统具有一些重要且独特的特征,在对数据进行建模时,请务必牢记这些特征。

Cloud Firestore 的分布式特性可能需要更改一些设计选择,尤其是对于那些针对主副本是写入吞吐量瓶颈的数据库进行优化的工作负载。

最佳做法

在单线程客户端中处理大量数据的工作负载可能会造成瓶颈。客户端可能能够使用单线程批量加载数据,因为客户端和服务器的吞吐量相当。 Cloud Firestore 数据库可以处理的并行性要高得多,但这需要您将客户端配置为并行发送请求。

mongoimport

使用 mongoimport 工具时,默认情况下会按顺序发出请求。如需缩短加载到 Cloud Firestore 中的时间,请使用 --numInsertionWorkers 标志设置工作器数量。正确的设置可能需要根据客户的规模进行调整,但我们通常建议至少从 32 开始。

异步编程

如果您使用与 MongoDB 兼容的 API 开发自己的软件,可以通过以下方式提高并行性:

  • 异步框架:使用异步框架可让您并行处理和响应请求。在调用数据库时,无需开发任何复杂的池化或排队机制。每个请求流程都可以使用独立的连接,并并行进行数据库调用。
  • 使用并行化计算产品:通过使用 Cloud Run 等服务,您的系统可以根据需要扩缩计算工作器的数量,以处理数据。

暂时性故障

使用 Cloud Firestore 等大型分布式系统时,您可能会遇到暂时性故障,例如网络故障或文档争用。

批量加载大量信息时,务必要为失败的写入操作维护重试策略,而不会使更大的批量加载操作失败。