Основной вопрос о разработке документов NOSQL
Вопрос
Я пытаюсь выяснить, как лучше реализовать это для моей системы ... и пока вытащить голову из пространства RDBMS ...
Часть моего нынешнего БД имеет три таблицы: шоу, шоу и вход. По сути, Showentry-это совместная таблица для многих ко многим между шоу и входом. В моих RDBMS, думая, что это довольно логично, поскольку любые изменения, чтобы показать, что детали могут быть сделаны в одном месте, и то же самое с входом.
Как лучше всего отразить это в хранилище на основе документов? Я уверен, что нет единого способа сделать это, но я не могу не думать, если хранилище на основе документов подходит для этого случая вообще.
К вашему сведению, я в настоящее время рассматриваю возможность реализации Ravendb. В то время как дискуссии по общему дизайну NOSQL будут хорошими, более ориентированная на Ravendb будет фантастическим!
Спасибо д.
Решение
При моделировании отношений для многих ко многим в базе данных документов вы обычно храните коллекцию иностранных ключей только в одном из документов. Документ, который вы выбираете, в значительной степени зависит от того, в каком направлении, которое вы намереваетесь пересечь отношения. Перенос его в одну сторону тривиально, пересекать его в другую сторону требует индекса.
Возьмите пример корзины для покупок. Более важно точно знать, какие предметы находятся в определенной корзине, чем корзины содержат определенный предмет. Поскольку мы обычно следуем по отношению в направлении корзины к элементам, имеет больше смысла хранить идентификаторы предметов в корзине, чем для хранения идентификаторов корзины в предмете.
Вы по -прежнему можете пересекать отношения в противоположном направлении (например, найти корзины, содержащие определенный элемент), используя индекс, но индекс будет обновлен в фоновом режиме, поэтому он не всегда будет на 100% точным. (Вы можете подождать, пока индекс станет точным с WaitForNonStaleResults
, но эта задержка покажет в вашем пользовательском интерфейсе.)
Если вам требуется немедленная 100% точность в обоих направлениях, вы можете хранить иностранные ключи в обоих документах, но ваша заявка должна будет обновлять два документа, когда будут созданы или уничтожены отношения.
Другие советы
Этот Прошел долгий путь к решению моего вопроса!