如何避免 cosmosdb 对 Scalar DL 的资产记录的最大存储限制?

问题描述

我计划将资产记录存储在 Azure CosmosDB 上的标量 DL 中。

CosmosDB 将每个(逻辑)分区的所有项目的最大存储大小限制为 20GB。 标量 DL 的资产是 Azure CosmosDB 上的分区键。因此,相同的资产存储在相同的分区中。我认为 Azure CosmosDB 上的资产大小是有限制的。

我们能避免这种限制吗? Scalar DL 是否具有链接到其他资产的功能

另见:https://docs.microsoft.com/en-us/azure/cosmos-db/concepts-limits

解决方法

答案是否定的。

首先,任何数据库系统通常都有这样的限制。 例如,DynamoDB 分区也有 10 GB 的限制。 Cassandra 分区最多可以有 20 亿个单元,但从性能角度建议小于 100 MB。 (见https://www.instaclustr.com/cassandra-data-partitioning/

因此,对您的资产进行适当建模以防止增长过多始终是一个好习惯。

如果您知道自己在做什么并且除了拥有大资产(分区)之外没有其他解决方案,请将您的资产拆分为多个资产。 (例如,如果存在 ID 名为 Asset-A 的资产,则创建 Asset-A-1、Asset-A-2、...、Asset-A-M) 在这种情况下,应用程序还必须管理它们的拆分方式。