在 MongoDB 中存储数据需要多少 space?

How much space does it take to store data in MongoDB?

我有一个 MongoDB,大约有 50 个 collections,但将来可能会增加。在每个 collections 上,我们将有 fields 范围从 5 - 11 列。

我的问题是如何优化MongoDB,这样我就不会因为superLongCollectionFieldName而占用存储空间。存储数据时character/word是如何计算的?

假设我有一个名为 userID 的字段和另一个名为 IP 的字段是否都占用了位块的完整大小?

您的数据所需的整体存储将取决于许多用例特定因素,包括架构、索引、数据的可压缩性以及您的数据 update/deletion 模式。字段名称的长度不会显着影响索引大小(因为索引只存储键值和文档位置),但长名称可能会对存储使用产生一些影响。估计存储使用情况的最佳方法是使用数据生成器或通过 extrapolating from existing data.

生成一些有代表性的测试数据

MongoDB(在 4.0 中)不维护字段名称的中央目录:字段名称存储在每个文档中,因此文档在分布式部署中是自描述的。在 MongoDB (3.2+) 的所有现代版本中,默认情况下都会压缩数据,因此对于大多数用例而言,字段名称的大小并不是一个典型的问题。

您可以通过应用程序代码实现到较短名称的映射,但这会增加翻译开销并降低存储在服务器中的文档的清晰度。有关更多讨论,请参阅:SERVER-863: Tokenize the field names.