小编典典

数据结构不断增长的MongoDB性能

redis

假设我们正在设计一个新系统,并决定使用MongoDB作为主数据库。数据模式与带有[增长中]评论的博客非常相似。

在《 MongoDB
Developers》一书中,技巧6:不要嵌入增长无限制的字段,它说将数据连续追加到数组的末尾效率低下(但它也暗示注释是“奇怪的情况”) )。

假设我们的新系统就像博客中的“评论”一样-一直在动态增长,但有时也会发生变化或被删除。

因此,在意识到使用MongoDB可能会导致性能问题之后,还有哪些其他替代数据库(必须是水平可伸缩数据库)可以满足此目的呢?(我们不介意将MongoDB用作主数据库,而是将“注释”分隔到备用数据库。可用的选项有哪些?

笔记:

具有哈希值作为其数据类型的Redis功能符合我们的“注释”数据结构的描述-不断增长,但有时会被修改或删除-
但是我们不需要纯粹的内存数据库(我们不想花那么多时间可以将数据持久存储到磁盘时的RAM)-否则,这将非常适合我们的问题

怎么样使用CouchDB?我们尚未对此产品进行调查。它如何在不断增长的数据结构中发挥作用?


阅读 328

收藏
2020-06-20

共1个答案

小编典典

补充一下Thilo所说的话,“不嵌入具有无限增长的字段”的原因是,这种类型的文档大小扩展会导致MongoDB在超出分配给它的当前空间时必须移动文档。您可以在文档的“
填充因子”部分中阅读有关此内容的更多信息。

这些类型的移动相对昂贵,尤其是如果它们频繁发生。因此,限制您的主集合(最新的X等)中等效注释的大小(实质上限制增长),甚至可能预先填充该文档字段(实质上是手动填充)以减少注释添加/更改所引起的移动。为您值得。

2020-06-20