Основной вопрос о разработке документов NOSQL

StackOverflow https://stackoverflow.com/questions/4798525

  •  24-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь выяснить, как лучше реализовать это для моей системы ... и пока вытащить голову из пространства RDBMS ...

Часть моего нынешнего БД имеет три таблицы: шоу, шоу и вход. По сути, Showentry-это совместная таблица для многих ко многим между шоу и входом. В моих RDBMS, думая, что это довольно логично, поскольку любые изменения, чтобы показать, что детали могут быть сделаны в одном месте, и то же самое с входом.

Как лучше всего отразить это в хранилище на основе документов? Я уверен, что нет единого способа сделать это, но я не могу не думать, если хранилище на основе документов подходит для этого случая вообще.

К вашему сведению, я в настоящее время рассматриваю возможность реализации Ravendb. В то время как дискуссии по общему дизайну NOSQL будут хорошими, более ориентированная на Ravendb будет фантастическим!

Спасибо д.

Это было полезно?

Решение

При моделировании отношений для многих ко многим в базе данных документов вы обычно храните коллекцию иностранных ключей только в одном из документов. Документ, который вы выбираете, в значительной степени зависит от того, в каком направлении, которое вы намереваетесь пересечь отношения. Перенос его в одну сторону тривиально, пересекать его в другую сторону требует индекса.

Возьмите пример корзины для покупок. Более важно точно знать, какие предметы находятся в определенной корзине, чем корзины содержат определенный предмет. Поскольку мы обычно следуем по отношению в направлении корзины к элементам, имеет больше смысла хранить идентификаторы предметов в корзине, чем для хранения идентификаторов корзины в предмете.

Вы по -прежнему можете пересекать отношения в противоположном направлении (например, найти корзины, содержащие определенный элемент), используя индекс, но индекс будет обновлен в фоновом режиме, поэтому он не всегда будет на 100% точным. (Вы можете подождать, пока индекс станет точным с WaitForNonStaleResults, но эта задержка покажет в вашем пользовательском интерфейсе.)

Если вам требуется немедленная 100% точность в обоих направлениях, вы можете хранить иностранные ключи в обоих документах, но ваша заявка должна будет обновлять два документа, когда будут созданы или уничтожены отношения.

Другие советы

Этот Прошел долгий путь к решению моего вопроса!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top