在 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.
我有一个 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.