gpt4 book ai didi

performance - 从性能角度来看 MongoDB 嵌入式与引用

转载 作者:IT老高 更新时间:2023-10-28 13:07:00 26 4
gpt4 key购买 nike

我读到从性能的角度来看嵌入更好:“如果性能是一个问题,嵌入。” ( http://www.mongodb.org/display/DOCS/Schema+Design ) 并且大多数指南总是说应该嵌入包含。

但是我不确定情况是否如此。假设我们有两个对象:Blog 和 Post。博客包含帖子。

现在将所有帖子嵌入到博客中会出现以下问题:

  1. 分页。由于无法过滤嵌入的对象,我们将始终获取所有帖子并需要在应用程序中将它们过滤掉。
  2. 过滤。和以前一样,在帖子中搜索单词时,将无法从 MongoDB 中过滤嵌入式集合。
  3. 插入。我假设插入集合比插入嵌入对象更快。这个对吗?这是写在哪里?
  4. 更新。和以前一样,小文档(帖子)内的内联更新字段可能比博客大文档内的内联更新更快。这是正确的吗?

考虑到以上所有内容,我会在一个单独的集合中发布引用博客的帖子。这是正确的结论吗?

(注意:请不要在回复中考虑文档大小限制,假设每个博客最多有 1000 个帖子)

最佳答案

1. 可以使用 $slice 进行分页运营商:

db.blogs.find({}, {posts:{$slice: [10, 10]}}) // skip 10, limit 10

2.过滤也可以:

db.blogs.find({"posts.title":"Mongodb!"}, {posts:{$slice: 1}}) //take one post

3,4。一般来说,我猜你是在谈论小的性能差异。这不是火箭科学,它只是包含最多 1000 个帖子的博客。

你说:

Is this the correct conclusion?

,如果您关心性能(通常如果系统很小,您可以使用单独的文档)。

我已经对 3,4 进行了小型性能测试,结果如下:

-----------------------------------------------------------------
| Count/Time | Inserting posts | Adding to nested collection |
-------------|--------------------------------------------------
| 1 | 1 ms | 28 ms |
| 1000 | 81 ms | 590 ms |
| 10000 | 759 ms | 2723 ms |
---------------------------------------------------------------

关于performance - 从性能角度来看 MongoDB 嵌入式与引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com