Azure cosmosdb 我应该如何根据我的要求将数据分离到集合中

Azure cosmosdb 我应该如何根据我的要求将数据分离到集合中,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我正试图找出我的解决方案应该使用多少集合。我知道这要视情况而定,但我想介绍一下我们将使用的数据类型 物联网遥测事件 参考数据(侦听来自外部系统的事件并将其存储) 读取模型-基于上述两个来源的数据创建非规范化视图 此外,我们还将利用物联网事件和参考数据的cosmos db change feed,因此我知道我们需要一个租赁收集 任何帮助或建议都会很好 正如你所说,这取决于多方面的因素,我没有完整的信息来给出最准确的答案,但为了做出正确的选择,我将尝试总结你需要知道的一切 分割 首先,分区键是不

我正试图找出我的解决方案应该使用多少集合。我知道这要视情况而定,但我想介绍一下我们将使用的数据类型

  • 物联网遥测事件
  • 参考数据(侦听来自外部系统的事件并将其存储)
  • 读取模型-基于上述两个来源的数据创建非规范化视图
此外,我们还将利用物联网事件和参考数据的cosmos db change feed,因此我知道我们需要一个租赁收集


任何帮助或建议都会很好

正如你所说,这取决于多方面的因素,我没有完整的信息来给出最准确的答案,但为了做出正确的选择,我将尝试总结你需要知道的一切

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

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

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

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

换料
更改提要需要指向一个集合才能存储租赁相关文档,但许多更改提要流程可以共享同一个更改提要集合,因此您至少需要一个。

。非常清楚地说,我可以创建一个租赁集合,并在多个监控单独集合的变更提要之间共享该集合?是的。有一个“前缀”。属性,您可以在更改提要处理器配置上设置该属性。此前缀将用于在集合中为租约的documentid添加前缀。值得一看并