我有一个大约有50 collections
的MongoDB,但是将来会增加。在每个collections
上,我们将拥有fields
,范围为5-11列。
我的问题是如何优化MongoDB,以免由于superLongCollectionFieldName
而占用存储空间。存储数据时如何计算字符/单词?
假设我有一个名为userID
的字段,另一个名为IP
的字段是否都占用了整个位块的大小?
答案 0 :(得分:1)
数据所需的总体存储将取决于许多用例特定的因素,包括架构,索引,数据的可压缩性以及数据更新/删除模式。字段名称的长度不会显着影响索引大小(因为索引仅存储键值和文档位置),但是长名称可能会对存储使用产生一些影响。估算存储使用率的最佳方法是使用数据生成器或通过extrapolating from existing data生成一些代表性的测试数据。
MongoDB(从4.0开始)没有维护字段名称的中央目录:字段名称存储在每个文档中,因此文档在分布式部署中是自描述的。在所有最新版本的MongoDB(3.2+)中,默认情况下都会压缩数据,因此对于大多数用例而言,字段名称的大小并不是典型的问题。
您可以通过应用程序代码实现对短名称的映射,但这将增加翻译开销并降低存储在服务器中的文档的清晰度。有关更多讨论,请参见:SERVER-863: Tokenize the field names。