Azure DocumentDB 数据建模、性能和价格
Azure DocumentDB Data Modeling, Performance & Price
我对 NoSQL 类型的数据库相当陌生,包括 Azure 的 DocumentDB。我已阅读文档并了解基础知识。
文档给我留下了一些关于数据建模的问题,尤其是它与定价的关系。
Microsoft 按 "per collection" 收费,集合是 JSON 个没有特定架构的对象的列表,如果我理解正确的话。
现在,由于不需要统一的架构,是否期望您的 "collection" 类似于 "database",因为集合本身可能包含不同类型的对象?或者是期望每个 "collection" 类似于 "table",因为它只包含相似类型的对象(可能允许对象属性的差异)。
查询性能在这里决定了一种方式还是另一种方式?
感谢您的任何见解!
DocumentDB 下的正常模式是在同一个 "collection" 中存储大量不同类型的对象。您可以通过字段 type = "MyType"
或 isMyType = true
来区分它们。后者允许子类化和混合行为。
至于性能,DocumentDB 保证为您选择的吞吐量提供 10 毫秒 read/15ms 写入延迟。对于您的生产系统,将所有内容都放在一个大 "partitioned collection" 中,并随着时间的推移根据您的 space 需求和负载需求滑动大小和吞吐量杠杆。您将获得本质上无限的可伸缩性,并且 DocumentDB 将在您增加(或减少)吞吐量和大小杠杆时负责分配(和取消分配)资源(辅助资源、分区等)。
集合类似于数据库,而不是关系 table。通常,您会在文档中存储 type
属性 以区分类型,如果限制为特定类型,则将 AND type='MyType'
过滤器添加到每个查询。
如果您将不同类型的文档存储在同一个集合与不同的集合中,查询性能不会有明显差异,因为您只是针对索引 属性(类型)添加了另一个过滤器。然而,您可能会受益于将吞吐量集中到单个集合中,而不是为每个 type/collection 分散少量吞吐量。
我对 NoSQL 类型的数据库相当陌生,包括 Azure 的 DocumentDB。我已阅读文档并了解基础知识。
文档给我留下了一些关于数据建模的问题,尤其是它与定价的关系。
Microsoft 按 "per collection" 收费,集合是 JSON 个没有特定架构的对象的列表,如果我理解正确的话。
现在,由于不需要统一的架构,是否期望您的 "collection" 类似于 "database",因为集合本身可能包含不同类型的对象?或者是期望每个 "collection" 类似于 "table",因为它只包含相似类型的对象(可能允许对象属性的差异)。
查询性能在这里决定了一种方式还是另一种方式?
感谢您的任何见解!
DocumentDB 下的正常模式是在同一个 "collection" 中存储大量不同类型的对象。您可以通过字段 type = "MyType"
或 isMyType = true
来区分它们。后者允许子类化和混合行为。
至于性能,DocumentDB 保证为您选择的吞吐量提供 10 毫秒 read/15ms 写入延迟。对于您的生产系统,将所有内容都放在一个大 "partitioned collection" 中,并随着时间的推移根据您的 space 需求和负载需求滑动大小和吞吐量杠杆。您将获得本质上无限的可伸缩性,并且 DocumentDB 将在您增加(或减少)吞吐量和大小杠杆时负责分配(和取消分配)资源(辅助资源、分区等)。
集合类似于数据库,而不是关系 table。通常,您会在文档中存储 type
属性 以区分类型,如果限制为特定类型,则将 AND type='MyType'
过滤器添加到每个查询。
如果您将不同类型的文档存储在同一个集合与不同的集合中,查询性能不会有明显差异,因为您只是针对索引 属性(类型)添加了另一个过滤器。然而,您可能会受益于将吞吐量集中到单个集合中,而不是为每个 type/collection 分散少量吞吐量。