NoSQL可重复数据



我正在学习nosql,并试图了解电影数据库网站的数据库设计会是什么样子?这让我很困惑,因为我无法理解我正在复制这么多信息的事实。我给你举个例子(也许我没有做对,你可以纠正我(:

所以,如果我有一部电影:

{
"title": "Interstellar",
"director": ...
...
"genre": [
"Comedy", "Action", ...
],
"actors": [
{
"name": ...
...
},
{
"name": ...
...
},
],
}

在电影之间,我会有很多相同的"类型"one_answers"演员"。这似乎不符合逻辑。。。如果我有其他可重复的东西,比如"类别"?如果我想在用户和电影之间建立链接,该怎么办?我的意思是,你明白我在说什么吗?请说明这应该如何(以及为什么(在nosql中实现。

非常感谢。

对我来说,noSQL的神奇之处在于决定你想要多少冗余。决定什么时候最好存储一个完整的对象,或者只存储指向其他集合中另一个对象的指针,这取决于你想做什么

例如,如果你想存储有关电影和参与电影的演员的信息,那么你可以使用这样的东西:

{
movies: [
{
name: ...
genres: ...
rating: ...
actors: [ id-actor1, id-actor2, id-actor3]
}, 
{ 
name: ...
genres: ...,
rating: ...,
actors: [id-actor2, id-actor4]
},
{ other bunch of actors }
],
actors: [
{
id: id-actor1,
name: John McActor,
favorite_food: Tacos
},
{
id: id-actor2,
name: Jenny McActress,
favorite_food: Pizza
},
{ other bunch of actors }
]
}

这样,你就不必存储每部电影中演员的信息,只需要一个标识符来过滤你需要的信息。这样,演员就不会存储在每一部电影中,而只是被引用,并且可以大大减少DB的大小。

有很多不同的方法可以做到这一点,通过增加或减少冗余,但最终取决于你想要实现什么。

最新更新