Сколько стоит встраивать в MongoDB? - PullRequest
1 голос
/ 17 ноября 2011

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

Итак, у меня есть документ, который я бы хотел пометить. Как упоминается в каждой документации / примере, я буду встраивать теги в документ. Однако, мой следующий шаг - где спасти слизня (из этого тега).

Должен в каждом документе вместо сохранения что-то вроде

["tag1", "this is tag 2"]

чтобы сохранить как:

[{ "slug": "tag1", "tag": "tag1" }, { "slug": "this-is-tag-2", tag: "this is tag 2" }]

Или я должен иметь другую коллекцию, содержащую уникальный тег для сопоставления слагов? (Таким образом, нужно сначала запросить это, прежде чем получать все документы с слагом "this-is-a-tag-2"?)

Не является ли сохранение шлака в документе пустой тратой пространства (учитывая, что отношение постоянно одинаково?) И, возможно, снижение производительности при запросе к коллекции?

Как бы вы поступили?

1 Ответ

0 голосов
/ 17 ноября 2011

Это зависит от того, чего вы пытаетесь достичь.В СУБД вы ищете единственную истинную структуру данных в n й нормальной форме.Такой «правильной» структуры данных для определенного набора данных в хранилище документов не существует - чтобы найти хорошую структуру данных, вы должны спросить себя: как выглядят мои запросы?Буду ли я читать намного чаще, чем вставлю?

Например, проблемный запрос с встраиванием может быть следующим: «показать теги, которые были использованы, отсортированы по популярности» или, что еще хуже, «показать теги, используемые моими друзьями, отсортированными по популярности».Чтобы быстро выполнить первый запрос, вы должны отслеживать доступные теги и количество ссылок в другом месте.В последнем случае вы должны использовать СУБД.

Тегирование - это один из редких случаев, когда я обычно встраиваюсь, потому что теги , как правило, меняются не слишком часто, и нетнеобходимо иметь некоторую ссылочную целостность (т.е. вы не можете изменить «тег»).Но это зависит от того, что вы помечаете и кто это делает.

Я также не понимаю, для чего нужен slug: если вам нужно что-то, что вы можете искать, вы можете просто удалить специальные символы ипробелы и сделать эту строчную строку при вставке?

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