我应该如何根据我的要求将我的数据分离到集合中
How should I segregate my data into collections based on my requirements
我正在努力想出我的解决方案应该使用多少个集合。我知道这取决于情况,但我想就我们将使用的数据类型提供一些背景信息。
- 物联网遥测事件
- 参考数据(监听来自外部系统的事件并存储)
- 读取模型 - 根据上述两个来源的数据创建非规范化视图
此外,我们将在 IoT 事件和参考数据上使用 cosmos db 更改提要,因此我知道我们需要为此收集租约。
任何帮助或建议都会很棒!
正如您所说,这完全取决于多种因素,我没有完整的图片来给出最准确的答案,但我会尝试总结您需要了解的所有内容,以便做出正确的选择。
分区
首先,分区键是不可变的。这意味着一旦使用分区键创建了一个集合,它的定义就不能改变。文档上的分区键值也是如此。
其次,分区的最大大小为 10GB(至少目前是这样)。这意味着,如果您选择的分区键最终会达到该数字,那么游戏就结束了,您必须将您的集合迁移到另一个分区键具有更多不同值的分区键。
我之所以提到这一点,是因为多种类型的实体可以存储在同一个集合中,唯一的限制是分区键。如果他们可以有一个共享的分区键(比如 eventId 之类的某种类型的 ID),那么他们就没有理由不能共享同一个集合。
成本和吞吐量扩展
好吧,我撒谎了。您的实体可能不应该共享同一个集合的另一个原因是成本和吞吐量缩放。每种类型的实体都有一个集合的优点是(可能)具有更合适的分区键,但也能够相互独立地扩展。这意味着您可以在 600 RU/s 上配置遥测事件集合,但在 400 RU/s 上配置参考数据。同样,这取决于您期望的负载,因此完全取决于您。从长远来看 运行 这最终可能会节省资金或花费比应有的更多的钱。
更改提要
更改源需要指向一个集合以存储租赁相关文档,但许多更改源进程可以共享同一个更改源集合,因此您至少需要一个。
我正在努力想出我的解决方案应该使用多少个集合。我知道这取决于情况,但我想就我们将使用的数据类型提供一些背景信息。
- 物联网遥测事件
- 参考数据(监听来自外部系统的事件并存储)
- 读取模型 - 根据上述两个来源的数据创建非规范化视图
此外,我们将在 IoT 事件和参考数据上使用 cosmos db 更改提要,因此我知道我们需要为此收集租约。
任何帮助或建议都会很棒!
正如您所说,这完全取决于多种因素,我没有完整的图片来给出最准确的答案,但我会尝试总结您需要了解的所有内容,以便做出正确的选择。
分区
首先,分区键是不可变的。这意味着一旦使用分区键创建了一个集合,它的定义就不能改变。文档上的分区键值也是如此。
其次,分区的最大大小为 10GB(至少目前是这样)。这意味着,如果您选择的分区键最终会达到该数字,那么游戏就结束了,您必须将您的集合迁移到另一个分区键具有更多不同值的分区键。
我之所以提到这一点,是因为多种类型的实体可以存储在同一个集合中,唯一的限制是分区键。如果他们可以有一个共享的分区键(比如 eventId 之类的某种类型的 ID),那么他们就没有理由不能共享同一个集合。
成本和吞吐量扩展
好吧,我撒谎了。您的实体可能不应该共享同一个集合的另一个原因是成本和吞吐量缩放。每种类型的实体都有一个集合的优点是(可能)具有更合适的分区键,但也能够相互独立地扩展。这意味着您可以在 600 RU/s 上配置遥测事件集合,但在 400 RU/s 上配置参考数据。同样,这取决于您期望的负载,因此完全取决于您。从长远来看 运行 这最终可能会节省资金或花费比应有的更多的钱。
更改提要
更改源需要指向一个集合以存储租赁相关文档,但许多更改源进程可以共享同一个更改源集合,因此您至少需要一个。