Azure DocumentDB数据建模,性能和价钱

时间:2017-03-14 01:57:31

标签: json azure azure-cosmosdb

我是NoSQL类型数据库的新手,包括Azure的DocumentDB。我已经阅读了文档并了解了基础知识。

文档给我留下了一些关于数据建模的问题,特别是它与定价的关系。

Microsoft以“每个集合”为基础收取费用,如果我理解正确,则集合是没有特定架构的JSON对象列表。

现在,由于不需要统一模式,期望您的“集合”类似于“数据库”,因为集合本身可能包含不同类型的对象?或者期望每个“集合”类似于“表”,因为它只包含相似类型的对象(可能允许对象属性的变化)。

查询性能是否会以这种或那种方式指示?

感谢您的任何见解!

2 个答案:

答案 0 :(得分:3)

DocumentDB下的常规模式是在同一“集合”中存储许多不同类型的对象。您可以通过字段type = "MyType"isMyType = true来区分它们。后者允许子类化和mixin行为。

至于性能,DocumentDB为您选择的吞吐量提供有保证的10ms读取/ 15ms写入延迟。对于您的生产系统,将所有内容放在一个大的“分区集合”中,随着空间需求和负载需求随着时间的推移滑动大小和吞吐量杠杆。您将获得基本上无限的可伸缩性,当您增加(或减少)吞吐量和大小杠杆时,DocumentDB将负责分配(和解除分配)资源(辅助,分区等)。

答案 1 :(得分:3)

集合类似于数据库,而不是关系表。通常,您会在文档中存储type属性以区分类型,并在限制为特定类型时为每个查询添加AND type='MyType'过滤器。

如果在同一集合中存储不同类型的文档与不同的集合,则查询性能不会有显着差异,因为您只是在索引属性(类型)上添加另一个过滤器。但是,您可能会将吞吐量汇集到单个集合中,而不是为每个类型/集合传播少量吞吐量。