java - 在MongoDB中: longer property names make bigger documents/use more memory?

标签 java mongodb morphia database

我使用 Mongo 及其 Java 驱动程序和 Morphia。我正在映射这个类:

public class Transaction {

    @Id
    private ObjectId id;
    private String transactionUniqueIdentifier;

}

我在控制台中看到 Mongo 以类似 {transactionUniqueIdentifier: "xjeer"}

的形式保存交易

这是否意味着我应该使用较短的属性名称(“uuid”而不是“transactionUniqueIdentifier”)来获得较小的数据库?或者 Mongo 中是否有一个设置可以为我处理这个问题(在内部创建更短的名称......)。
任何指针将不胜感激,谢谢。

最佳答案

MongoDB 中没有字段名称的内部映射。

是否创建较短的名称取决于很多因素,包括 MapReduce 中文档的使用情况、文档的总体大小以及服务器上的硬件。

例如,如果您的文档在 MapReduce 中使用 transactionUniqueIdentifier 而不是 uuid 更容易处理,并且文档非常小(假设每个文档大约 5KB),那么您有SSD(实际上可能不需要)那么字段名称的缩小几乎变得毫无用处。

有些人会认为事实并非如此,但现实世界的使用表明您有更大的事情需要担心。

但是,如果您有很多名称很长的字段,或者您的名称比 transactionUniqueIdentifier 长,那么您可能需要考虑缩短它们,否则您可能会花费大部分时间时间从磁盘加载文档的字段名称而不是加载实际值(因为字段名称将大于文档值的总大小)。

计划压缩字段名称,但到目前为止,其他功能已优先。

关于java - 在MongoDB中: longer property names make bigger documents/use more memory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20119596/

相关文章:

javascript - 从多对象 req.body 更新数组中的多个对象

java - Morphia - 更改与集合关联的类

java - 具有默认值的实例变量的 Morphia 投影行为

java - 具有 .NET 2.0 和 Java 客户端的 WCF 服务

java - 如何将日期时间戳添加到 log4j2 日志文件?

Java 6 RegEx 匹配所有不在 Unicode 的字母和标记类别中的字符

MongoDB 副本集 - 参数 linuxConfiguration.ssh.publicKeys.keyData 的值无效

java - Maven 构建失败,如何在 Eclipse 中将 -source 1.5 更改为 -source 7 或更高版本

node.js - Mongoose:跨多个领域的独特性

java - Morphia 泛型 - 不可能吗?