免责声明:通过参考数据,我不是指参照完整性
我正在学习nosql,并想了解数据应该如何建模.例如,在CMS应用程序的典型关系数据库中,您可能有两个表:article和author,其中article引用了作者.
在nosql系统中,您可以通过这种方式创建文章文档,因为它们只是伪装的对象图
{
title: "Learn nosql in 5 minutes",
slug: "nosql_is_easy",
author: {firstName: "Smarty"
lastName: "Pants"
}
{
title: "Death to RDBMS",
slug: "rdbms_sucks",
author: {firstName: "Smarty"
lastName: "Pants"
}
Run Code Online (Sandbox Code Playgroud)
等等...
有一天,Smarty Pants先生决定将他的名字改为Regular Joe,因为nosql已经无处不在.在这种用例中,需要扫描每篇文章并更新作者姓名.
所以我的问题是,如何在nosql中建模数据以适应CMS的基本用例,以便性能与RDBMS相当或更快?例如,mongodb声称CMS是一个用例......
编辑:
很少有人建议将数据标准化,例如:
article
{
title: "Death to RDBMS",
slug: "rdbms_sucks",
author: {id: "10000001"}
}
author
{
name: "Big Brother",
id: "10000001"
}
Run Code Online (Sandbox Code Playgroud)
但是,由于nosql在设计上缺少连接,因此必须使用类似mapreduce的函数将数据组合在一起.如果这是您的建议,请评论此类操作的执行情况.
编辑2:
如果您认为nosql不适合需要参考数据的任何类型的数据,请解释原因.这似乎使得nosql的用例相当有限,因为任何合理的应用程序都将包含关系数据.
编辑3: