noSQL и нормализованные данные - PullRequest
5 голосов
/ 02 декабря 2011

Я подумываю начать свой первый проект CouchDB и исходить из опыта ORM. Меня интересует, как создать свои документы, которые могут быть трудны в обслуживании.

Например, если у меня есть следующая модель:

A * ---> (1) B

, что означает, что для каждого объекта A существует объект B, и существует множество экземпляров A, которые могут совместно использовать объект B.В этом случае есть указатели / внешний ключ от A до B.

Я мог бы создать документ, который содержит все данные A и данные B.Однако у меня возникает проблема, если на более позднем этапе (после создания 10000 документов) мне может понадобиться изменить некоторые данные, что означает, что мне нужно обновить все мои документы.

В мире ORM / нормализованных баз данных я просто обновил бы B, и все мои ссылки теперь до базы данных.

Как мне справиться с этим в CouchDB, или подход NoSQL для них не подходиттипы ситуаций?

JD

1 Ответ

5 голосов
/ 02 декабря 2011

Общий ответ на этот вопрос: На этот вопрос нет общего ответа.

Дело в том, что в NoSQL структура данных определяется не данными, а запросами, которые структура данных должна поддерживать. Таким образом, вместо использования одного и того же шаблона для каждого экземпляра проблемы ассоциации 1: N или M: N, NoSQL-способ заключается в использовании различных шаблонов в зависимости от ваших конкретных потребностей. Это могут быть, например:

  • Коэффициент записи / чтения
  • Специальные функции базы данных, которые облегчают или усложняют встраивание
  • Типы запросов, которые вам нужно поддерживать
  • Замечания по производительности относительно того, как данные могут быть проиндексированы, защищены, объединены или иным образом разделены или кэшированы

В целом, я чувствую, что новички склонны к чрезмерному внедрению, но я могу говорить только за MongoDB. Встраивание - это мощная функция, но внедренные объекты не являются «первоклассными гражданами», поэтому ее не следует использовать в качестве замены для каждого отношения 1: n. Только для некоторых:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...