什么是最快的,@ Entity或@Embedded?

时间:2011-09-21 12:34:27

标签: mongodb morphia

我是新的(今天)到NoSql MongoDb并试图了解Morphia 我希望有一个这样的@Entity:

如果我有3个名为
的表(集合) STAT
好友列表
用户数据
我在Userdata中保存了UserData.Class,在Stat中保存了Statistic.Class等等......

我的想法是,如果我给每个用户一个唯一的ObjectId UUID nr,然后每个Statistic和FriendList都有这个UUID nr作为ObjectId。因为如果程序只需要运行统计,它将仅加载/处理Statistic。

@Entity
public class UserData {

    @Id private ObjectId id = "UUID 123456789;
    public String userName = "";
    public String password = "";    
    @Embedded
    private Statistic statistic;
    @Embedded
    private FriendList friendList;
}

如果有类似18000 /小时的请求来获取UserData,那么声明它们就不会更快: (我使用相同的ObjectId,它们存储在单独的集合(表格)

@Entity
public class UserData {

    @Id private ObjectId id = "UUID 123456789;
    public String userName = "";
    public String password = "";
}

@Entity
public class Statistic {

    @Id private ObjectId id = "UUID 123456789;
    public int loginTimes;
    public String gps;

}

@Entity
public class FriendList {

    @Id private ObjectId id = "UUID 123456789;
    public ArrayList<String> fiends;
}

2 个答案:

答案 0 :(得分:2)

我认为正确的是使用DBRef或Embedded。

如果你想在其他对象中使用列表的某个对象,请使用DBRef,否则使用embedded。

例如,在博客文章中,评论永远不会在其他帖子中使用,因此,其嵌入式。

所以,请使用像:

这样的东西
@Entity
public class UserData {

@Id private ObjectId id = "UUID 123456789;
public String userName = "";
public String password = "";    
@Embedded
private Statistic statistic;
@Embedded
private List<Friends> friendList;
}
希望它有所帮助。

答案 1 :(得分:0)

嵌入式总是更快,因为参考存储在不同的物理位置。