• 技术文章 >数据库 >SQL

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

    步履不停步履不停2019-07-01 18:04:56原创1467

    简单描述:

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

    1. 有一个大的文档,但是它其实拥有一些相似的字段,而且这些字段的一个子集具有相同的特征,最后其实需要对这些子集字段进行排序或者查询;
    2. 实际上也不是所有文档都会出现需要的排序字段;
    3. 或者上述两个条件均满足
      事实上考虑到性能方面的原因,为了优化搜索可能需要许多索引才能照顾到这些子集。但是创建越多的索引也只会导致性能的下降。属性模式为这种情况提供了一个很好的解决方案。

    实例:

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

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

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

    结论:

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

    更多SQL相关技术文章,请访问SQL教程栏目进行学习!

    以上就是MongoDB – 使用模式构建之属性模式的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:MongoDB
    上一篇:having用法 下一篇:MongoDB – 使用模式构建之多态模式

    相关文章推荐

    • redis和mongodb区别• redis与mongodb有哪些区别• MongoDB 索引的最佳实践

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网