在MongoDB中:更长的属性名称会生成更大的文档/使用更多的内存?

时间:2013-11-21 11:22:05

标签: java mongodb morphia database

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

public class Transaction {

    @Id
    private ObjectId id;
    private String transactionUniqueIdentifier;

}

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

之类的形式保存了一个事务

这是否意味着我应该使用较短的属性名称(“uuid”而不是“transactionUniqueIdentifier”)来获取较小的数据库?或者Mongo中有一个设置可以解决这个问题(在内部创建更短的名字......) 任何指针都会受到赞赏,thx。

2 个答案:

答案 0 :(得分:2)

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

是否创建更短的名称取决于许多因素,包括Map Reduce中文档的使用,文档的整体大小以及服务器上的硬件。

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

有些人认为不是这样,但现实世界的使用要求你有更大的事情需要担心。

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

有计划压缩字段名称,但是,其他功能已经优先考虑。

答案 1 :(得分:1)

使用morphia,默认情况下,文档属性名称与java字段名称匹配。您可以命名它们,但是您希望使用@Property注释将其序列化为mongodb并提供您想要的任何名称。