免责声明:所述的参考数据并不意味着参照完整性
我正在学习Nosql,并希望了解如何建模数据。例如,在CMS应用程序的典型关系数据库中,您可能有两个表:文章和作者,其中文章引用了作者。
在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"
}
等等...
假设有一天,聪明的先生决定改名为普通人,因为nosql已经变得无处不在。在这种情况下,每篇文章都需要被扫描并更新作者的姓名。
那么我的问题是,如何在nosql中建模数据以适应CMS的基本用例,从而使性能与RDBMS相当或更快?例如,mongodb 将 CMS 作为一个用例...
编辑:
一些人已经建议将数据规范化,例如:
article
{
title: "Death to RDBMS",
slug: "rdbms_sucks",
author: {id: "10000001"}
}
author
{
name: "Big Brother",
id: "10000001"
}
然而,由于nosql的设计缺乏连接,您将不得不使用类似于mapreduce的函数来汇集数据。如果这是您的建议,请评论此类操作的性能。
如果您认为nosql不适合需要引用数据的任何类型数据,请解释原因。这似乎使nosql的用例相当有限,因为任何合理的应用程序都会包含关系数据。
Nosql并不意味着非关系。Nosql doesn't mean non-relational。