我应该如何根据自己的需求将数据隔离到集合中

时间:2018-11-03 12:25:49

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我试图得出我应该为解决方案使用的集合数。我知道这取决于情况,但我想对我们将使用的数据类型提供一些背景信息。

  • 物联网遥测事件
  • 参考数据(侦听来自外部系统的事件并将其存储)
  • 读取模型-根据上述两个来源的数据创建非规范化视图

此外,我们将在IoT事件和参考数据中使用cosmos db更改提要,因此我知道我们将为此需要租赁集合。

任何帮助或建议都会很棒!

1 个答案:

答案 0 :(得分:1)

正如您所说,这全都取决于多项事情,我没有完整的图片来给出最准确的答案,但是我将尝试总结您需要知道的所有内容,以便做出正确的选择。

分区

首先,分区键​​是不可变的。这意味着一旦使用分区键创建了集合,其定义就无法更改。文档上的分区键值也是如此。

第二,分区的最大大小为10GB(至少当前)。这意味着,如果选择一个最终会达到该数字的分区键,那么游戏就结束了,您必须使用具有更多不同值的分区键将您的收藏迁移到另一个分区。

我之所以要提到它,是因为可以将多种类型的实体存储在同一集合中,唯一的限制是分区键。如果他们可以有一个共享的分区键(比如说像eventId这样的ID类型),那么就没有理由不能共享相同的集合。

成本和吞吐量缩放

好吧,我撒谎了。还有一个原因可能导致您的实体不应该共享相同的集合,那就是成本和吞吐量扩展。每种类型的实体拥有一个集合的优点是(潜在地)具有更合适的分区键,但又能够彼此独立地扩展。这意味着您可以以600 RU / s的速度配置遥测事件集合,但以400 RU / s的速度配置参考数据。同样,这取决于您期望的负载,因此完全取决于您。从长远来看,这最终可能会省钱或花费更多的钱。

更改供稿

为了存储与租赁相关的文档,需要将变更Feed指向一个集合,但是许多变更Feed流程可以共享相同的变更Feed集合,因此您至少需要一个。