我的mongoDB集合中的所有文档都有一个整数数组。对于每个整数,我不需要超过32位,并且整数数组的长度对于每个文档都是相同的。
我的应用程序的客户端经常会更新阵列中的各个字段。
如果我有5000到10000个带有256个整数数组的文档,mongo db会占用多少空间,因为需要为我准备好将我的数组内容更改为非整数数据类型,或者更改数组的长度?
与传统的关系数据库相比,mongoDB的设计是否会使我的数组中的单个整数更新效率非常低?
假设我正在使用此处描述的更新数组语法: http://docs.mongodb.org/manual/applications/update/#update-arrays
答案 0 :(得分:1)
将mongo db废弃空间,因为它需要为我准备好将我的数组内容更改为非整数数据类型或更改数组的长度?
不,它不会浪费空间。我没有考虑改变数据类型或改变数组长度的能力,而是专注于MongoDB的padding factor,从而自适应地学习文档是否会增长。由于您的文档大小非常相似,因此您的填充因子将倾向于1(即文档大小上几乎不添加额外的填充)。
与传统的关系数据库相比,mongoDB的设计是否会使我的数组中的单个整数更新效率非常低?
由于嵌入式数组没有精确的关系等效,因此比较并不明显。您可以假设关系等价于JOIN
。在这种情况下,我相信MongoDB会更快,因为JOIN
有自己的成本。
另外需要注意的是,考虑到MongoDB可以处理的数据量,5,000到10,000个文档是微不足道的。只要您在更新时指定索引条件(例如_id),就不必担心这里需要考虑任何空间或性能问题。但是,由于您的文档不是很小,我要注意的一件事是尝试在查询查询中一次加载整个文档,您可能更喜欢project find queries仅针对特定字段;在查询数组时,您可能需要考虑$slice。