2

我的 mongoDB 集合中的所有文档都有一个整数数组。对于每个整数,我不需要超过 32 位,并且整数数组的长度对于每个文档都是相同的。

我的应用程序的客户端将经常更新数组中的各个字段。

如果我有 5000 到 10000 个包含 256 个整数数组的文档,mongo db 是否会浪费空间,因为我需要准备好将数组的内容更改为非整数数据类型,或者更改数组的长度?

与传统的关系数据库相比,mongoDB 的设计是否会使更新数组中的单个整数非常低效?

假设我正在使用此处描述的更新数组语法:http: //docs.mongodb.org/manual/applications/update/#update-arrays

4

1 回答 1

1

mongo db 是否会浪费空间,因为我需要准备好将数组的内容更改为非整数数据类型或更改数组的长度?

不,它不会浪费空间。与其从更改数据类型或更改数组长度的能力方面考虑这一点,我将专注于 MongoDB 的填充因子,它可以自适应地了解文档是否倾向于增长。由于您的文档大小将非常相似,因此您的填充因子将趋向于 1(即几乎没有在文档大小上添加额外的填充)。

与传统的关系数据库相比,mongoDB 的设计是否会使更新数组中的单个整数非常低效?

由于嵌入式数组没有精确的关系等价物,因此比较并不明显。您可能会假设关系等价物是 a JOIN。在这种情况下,我相信 MongoDB 会运行得更快,因为 aJOIN有它自己的成本。


作为附加说明,考虑到 MongoDB 可以处理的数据量,5,000 到 10,000 个文档是微不足道的。只要您在更新中指定索引标准(例如_id),您就不必担心任何空间或性能问题。但是,由于您的文档并不小,我要注意的一件事是尝试在查找查询中一次加载整个文档,您可能更喜欢仅针对特定字段投射查找查询;在查询数组时,您可能需要考虑$slice

于 2013-02-15T22:44:52.863 回答