【发布时间】:2013-02-15 21:48:47
【问题描述】:
我的 mongoDB 集合中的所有文档都有一个整数数组。对于每个整数,我不需要超过 32 位,并且整数数组的长度对于每个文档都是相同的。
我的应用程序的客户端会经常更新数组中的各个字段。
如果我有 5000 到 10000 个包含 256 个整数的数组的文档,mongo db 是否会浪费空间,因为我需要准备好将数组的内容更改为非整数数据类型,或者更改数组的长度?
与传统的关系数据库相比,mongoDB 的设计是否会使更新我的数组中的单个整数非常低效?
假设我正在使用此处描述的更新数组语法: http://docs.mongodb.org/manual/applications/update/#update-arrays
【问题讨论】:
-
您的文档在修改后是否会增长,以至于它们必须从之前的连续空间中移出?
-
@Sammaye 没有。每个数组的长度总是与其他数组的长度完全相同。对于此问题中的示例,假设每个数组的长度为 256。包含数组和其他字段的文档的总大小也不会改变。
-
更新的最大问题是移动,考虑到你不会有这个问题,我认为你可以很好地将它们拍打到子文档中,并且应该在这里看到良好的性能,特别是因为它是数组中的 256 个元素,它们应该非常快地加载到 $pull 等内存运算符中
-
附带说明:
will mongo db waste space because it needs to be prepared for me to change the contents of my arrays to non-integer datatypes大多数时候 MongoDB 只会分配一个刚刚超过 1 的填充因子,通常可能是 1.1 左右,这意味着它只会给您的实际应用带来非常小的开销对象,比如小,当然取决于对象的大小
标签: mongodb non-relational-database