Отказ от ответственности: под ссылочными данными я не подразумеваю ссылочную целостность
Я изучаю 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"
}
и так далее ...
Скажем, однажды мистер Смарти Пантс решил сменить имя на Обычного Джо, потому что nosql стал вездесущим.В таком случае необходимо будет отсканировать каждую статью и обновить имя автора.
Итак, мои вопросы: как моделировать данные в nosql, чтобы они соответствовали базовым сценариям использования CMS, чтобы производительность на одном уровне или выше, чем в РСУБД ? mongodb , например, утверждает, что CMS используется в качестве варианта использования ...
Редактировать :
Мало кто уже предложил нормализовать данные, например:
article
{
title: "Death to RDBMS",
slug: "rdbms_sucks",
author: {id: "10000001"}
}
author
{
name: "Big Brother",
id: "10000001"
}
Однако, поскольку nosql по своей природе не имеет соединений, вам придется использовать функции, подобные mapreduce, для объединения данных.Если это ваше предложение, пожалуйста, прокомментируйте выполнение такой операции.
Edit 2:
Если вы считаете, что nosql не подходит для любых типов данных, которыеТребуются справочные данные, пожалуйста, объясните, почему.Казалось бы, это делает вариант использования nosql довольно ограниченным, поскольку любое разумное приложение будет содержать реляционные данные.
Редактировать 3:
Nosql не означаетнереляционная