大多数情况下,我们需要在当前系统中搜索PublisherId和PlanId,其中模型结构如下:
发布者型号: Publisher Id Publisher Name…。。
计划模型:计划Id计划名称发布者Id…。。
发布者与计划模型的关系为1:M。
场景:我们不能将Publisher Id或Plan Id作为分区键,因为我们有3-5个发布者,他们用来提交可能很快就会超过10 GB限制的批量数据。
发布于 2019-03-06 21:37:35
从给定的情况来看,Publisher Id听起来确实是一个很好的分区键候选者,但不是足够的。
我建议使用另一个值来创建分区来传播数据。一个不错的选择是year。也就是说,创建一个将Publisher id与文档创建年份相结合的Id,例如<PublisherId>.2019 (如果每年每个publisher都有非常多的文档,则可以包括month )。
这可以很容易地及时归档较旧的内容,并可以为查询提供好处,但这取决于您的系统。
正如您所注意到的,您将需要查看数据的分布情况,并选择一个在您进行扩展时可以正常工作的分区。
发布于 2019-03-07 17:24:11
10 GB的限制是在逻辑分区上的,如果您选择的partitionKey足够宽,就不应该担心这个问题。
我假设您的文档如下所示,并创建了一个新的合成分区键- publisherIdentifier。
{
"publisherIdentifier": "1.Content.USA",
"publisherId": "1",
"publisherName": "A",
"publisherType": "Content",
"publisherCountry": "USA",
"plans": [{"planId": "P1"},{"planId": "P2"},{"planId": "P3"}]
}然后,可以根据发布者的计划查询发布者
SELECT VALUE publisher.publisherName
FROM publisher
JOIN plans IN publisher.plans
where plans.planId = "P1"https://stackoverflow.com/questions/54993621
复制相似问题