17

MongoDB 应用程序常见问题解答提到短字段名称是一种可用于小型文档的技术。这让我想到,“小文件到底是什么?”

我正在使用 pymongo,有什么方法可以编写一些 python 来扫描集合,并了解用于字段描述符的字节与用于实际字段数据的字节的比率?

我对每个文档的基本字节开销也很感兴趣。

4

1 回答 1

28

没有内置方法可以获取 BSON 文档中键使用的空间与实际字段值使用的空间的比率。但是,collstatsdbstats命令可以为您提供有关集合和数据库大小的有用信息。以下是如何在 pymongo 中使用它们:

from pymongo import MongoClient

client = MongoClient()
db = client.test

# print collection statistics
print db.command("collstats", "events")

# print database statistics
print db.command("dbstats")

不过,您总是可以破解一些东西以获得一个很好的估计。如果集合中的所有文档都具有相同的架构,那么这样的事情还不错:

  1. 统计一个文档的字段名称中的字符总数,并将这个数字称为 a
  2. 为每个字段添加一个以说明终止字符。让结果为b
  3. 将b乘以集合中的文档数,并将结果用c表示。
  4. 将c除以collStats 返回的“大小”字段(假设 collStats 缩放以返回以字节为单位的大小)。让这个值为d

现在d是用于存储字段名称的集合的总数据大小的比例。

于 2013-09-17T17:02:16.687 回答