我使用 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/