Mar*_*cel 7 document-oriented-db mongodb morphia
使用文档oriënted数据库mongodb和Object Document Mapper(ODM)morphia
可以说我们有3个不同的类; Object,Category和Action.
这些对象都存储在集合中; 对象,类别和动作.
Category并且Action是参考Object
@Entity("objects")
public class Object {
@Id
@Property("id")
private ObjectId id;
@Reference
private Category category;
private Action action;
...
}
@Entity("categories")
public class Category {
@Id
public String categoryTLA;
public String categoryName;
...
}
@Entity("actions")
public class Action implements BaseEntity {
@Id
public String action;
public int accesLevel;
...
}
Run Code Online (Sandbox Code Playgroud)
具有当前实现的文档存储如下:
是否有可能存储2个不同的对象,在这种情况下Category,并Action在一个集合,像显示在下面的例子?两者都有自己的身份!
当然,可以在一个集合中存储多种类型的文档.事实上,这是像Mongo这样的面向文档的数据库的优势之一.但是,您可能不想在不考虑某些问题(正面和负面)的情况下将它们组合在一起:
Action不能是一个Category例子.如果你做了相同的FindAll并且有多种文档类型,除非反序列化器可以在反序列化开始之前评估文档结构,否则你的代码可能无法按预期工作.Action进行索引(例如,如果索引具有unqiue Category,则插入到包含两者的集合中的所有文档将通过索引器运行,对于集合中定义的所有索引.这可能会影响性能,具体取决于索引的性质这意味着无论索引是否有意义,集合中的所有文档都将被编入索引.这通常是不能组合不具有共同索引特征的多个文档类型的一个令人信服的理由.除非您需要执行需要将所有文档放在公共集合中的特定类型的查询,否则我可能会将它们保留在单独的集合中,尤其是如果您计划对各种文档类型/模式使用自定义索引.
| 归档时间: |
|
| 查看次数: |
6326 次 |
| 最近记录: |