MongoDB - поиск / таксономии - PullRequest
1 голос
/ 26 февраля 2012

В моей базе данных MongoDB у меня есть несколько типов документов, которые требуют информацию о поиске / таксономии. Обычно я либо держу идентификатор поиска или идентификатор и денормализую информацию поиска в основной документ.

, например

task = { 
   TaskDetail : "Some task",
   TaskPriority : { Id : xxxxx, Code : 'U', Description:'Urgent' }
}

Переходя от традиционных реляционных баз данных (RDBMS), где у меня была бы просто таблица TaskPriority, мне стало интересно, как лучше всего использовать документы в монго?

Моей первоначальной мыслью было создать таксономическую / справочную коллекцию. Как правило, поиск и перечисления короткие, поэтому каждый может быть отдельным документом в коллекции? Или я мог бы отразить то, что вы обычно делаете в базе данных RDBMS, и создать коллекцию для поиска?

Кто-нибудь может указывать на меня в правильном направлении?

Заранее спасибо,

Sam

1 Ответ

0 голосов
/ 25 октября 2017

Ссылка имеет такие преимущества, как:

  1. Лучшее управление основными данными
  2. Дедупликация, следовательно, меньше обновлений.

недостатки:

  1. поиск - это отдельный вызов API, нет соединений в MongoDB
  2. $ DBRef из $ lookup-функций все еще можно использовать, но громоздко. Ручное руководство проще.
  3. Атомарность на уровне документа, поэтому поиск в коллекциях может на некоторое время перестать синхронизироваться, если справочная коллекция поиска будет обновлена.

Встраивание - С другой стороны, встраивание не имеет смысла для справочных данных, так как в случае обновления поискового значения вам необходимо обновить все ваши документы. Это огромная задача по отслеживанию всех документов и их ключей, которые требуют обновления справочных данных.

Во-вторых, встраивание справочных данных, также не может достичь способности хранения истории SCD (медленно меняющееся измерение). Если вместо этого используется ссылка, это можно сделать с помощью даты версии в коллекции ссылок.

Учитывая эти моменты, я склонен ссылаться. Но мое единственное сомнение заключается в том, что, если у меня нет ссылочного значения в моих родительских документах, как будет работать поиск? Когда пользователь выполняет поиск по описательным ссылочным значениям, как Монго будет ссылаться на сбор справочных данных?

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