[英]Advice on MongoDB schema design
我目前正在为将使用mongodb和spring-data的应用程序设计db模式。 我对NoSQL数据库很陌生,并在以下设计问题中苦苦挣扎:
该应用程序将具有三个简单的域对象: Users
, Notes
和Tags
。 用户可以拥有多个注释(1:n),并且每个注释都使用一个或多个标签(n:m)进行注释。
现在我的问题是 ,我想不出在Notes和标签之间设计一对多关系的最佳方法是什么。
主要用例将是通过带注释的标签查询用户的注释。 因此,我的第一种方法是将标签嵌入到Notes中。 我可以在这里处理冗余,因为我真的希望快速读取操作以及Notes和/或Tag的更新不太可能经常发生。 但是,我还需要查询用户的所有标签的列表(即在按标签搜索Notes时实现预输入功能)。
目前,我的Note文档看起来像这样:
{
"id":"51bcf4a97aecbafaf5e79713",
"label":"Label of the Note",
"contents":"Contents of the Note",
"owner":"username",
"tags":[
{
"name":"Tag1",
"type":"default"
},
{
"name":"Tag2",
"type":"default"
}
]
}
我的主要问题是:
我建议按照您的描述存储注释,并在用户文档中另外存储所有使用的标签。 请记住,数据冗余在MongoDB中是可以接受的,并且通常是最好的方法,因为您应该将架构设计为读取而不是写入。
然后,在Java方面,您只需将Set中的标签存储为User类的属性,这样就可以确保在其中存储唯一数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.