MongoDB – 使用模式构建之属性模式

栏目: 数据库 · 发布时间: 6年前

内容简介:简单描述:直接进入了解属性模式。它特别适合以下的情况:事实上考虑到性能方面的原因,为了优化搜索可能需要许多索引才能照顾到这些子集。但是创建越多的索引也只会导致性能的下降。属性模式为这种情况提供了一个很好的解决方案。

简单描述:

直接进入了解属性模式。它特别适合以下的情况:

  1. 有一个大的文档,但是它其实拥有一些相似的字段,而且这些字段的一个子集具有相同的特征,最后其实需要对这些子集字段进行 排序 或者查询;
  2. 实际上也不是所有文档都会出现需要的排序字段;
  3. 或者上述两个条件均满足

事实上考虑到性能方面的原因,为了优化搜索可能需要许多索引才能照顾到这些子集。但是创建越多的索引也只会导致性能的下降。属性模式为这种情况提供了一个很好的解决方案。

实例:

一个订单数据文档,其实是有很多需要记录的时间,比如创建时间,支付时间,发货时间等等。在设计数据结构的时候当然第一时间就会想到如图:

MongoDB – 使用模式构建之属性模式

实际上这种设计在时间类型比较少的情况下是没有太大问题,但是结合了实际业务场景,一张订单的时间当然不会太少,有时候为了优化排序,不得不建立相应的所以,现在问题就来的,根据这么多字段逐个建立索引那可能建立很多,这样反而会降低整体查询的性能。那么这时候使用属性模式就很合适了。如下图:

MongoDB – 使用模式构建之属性模式

如果订单数据结构考虑使用了这种模式后,就不需要反复为相似的字段子集建立索引,大大提高查询效率。

结论:

属性模式针对每个文档中许多类似字段提供了更简单的文档索引。通过将这个数据子集移动到一个键值子文档中,我们可以使用不确定的字段名,为信息添加额外的限定符,并更清楚地说明原始字段和值的关系。当我们使用属性模式时,由于需要的索引更少,查询变得更简单更快。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

场景革命

场景革命

吴声 / 机械工业出版社 / 2015-7-1 / 59.00元

How-old如何引爆了朋友圈的全民脑洞狂欢? Uber是打车软件,还是入口? 为什么“自拍”会成为一个产业? 美团如何成为电影票房冠军的幕后推手? 商业进入了新物种时代,超级平台之后,PC时代以降,IoT(万物互联)崛起之时,到底什么是新的入口?一系列的颠覆使我们开始正视移动互联时代的品类创造方法,一场孕育已久的场景革命正在发生。 《场景革命:重构人与商业的连接》为......一起来看看 《场景革命》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换