我是NoSQL类型数据库的新手,包括Azure的DocumentDB。我已经阅读了文档并了解了基础知识。
文档给我留下了一些关于数据建模的问题,特别是它与定价的关系。
Microsoft以“每个集合”为基础收取费用,如果我理解正确,则集合是没有特定架构的JSON对象列表。
现在,由于不需要统一模式,期望您的“集合”类似于“数据库”,因为集合本身可能包含不同类型的对象?或者期望每个“集合”类似于“表”,因为它只包含相似类型的对象(可能允许对象属性的变化)。
查询性能是否会以这种或那种方式指示?
感谢您的任何见解!
答案 0 :(得分:3)
DocumentDB下的常规模式是在同一“集合”中存储许多不同类型的对象。您可以通过字段type = "MyType"
或isMyType = true
来区分它们。后者允许子类化和mixin行为。
至于性能,DocumentDB为您选择的吞吐量提供有保证的10ms读取/ 15ms写入延迟。对于您的生产系统,将所有内容放在一个大的“分区集合”中,随着空间需求和负载需求随着时间的推移滑动大小和吞吐量杠杆。您将获得基本上无限的可伸缩性,当您增加(或减少)吞吐量和大小杠杆时,DocumentDB将负责分配(和解除分配)资源(辅助,分区等)。
答案 1 :(得分:3)
集合类似于数据库,而不是关系表。通常,您会在文档中存储type
属性以区分类型,并在限制为特定类型时为每个查询添加AND type='MyType'
过滤器。
如果在同一集合中存储不同类型的文档与不同的集合,则查询性能不会有显着差异,因为您只是在索引属性(类型)上添加另一个过滤器。但是,您可能会将吞吐量汇集到单个集合中,而不是为每个类型/集合传播少量吞吐量。