Рекомендации по структуре для дерева тегов Mongoid / MongoDB - PullRequest
2 голосов
/ 20 сентября 2010

Я ищу некоторые рекомендации о том, как структурировать теги как часть этой модели данных:

Вот упрощенная версия:

  • Сайт имеет много сообщений (реляционная ассоциация [reference_many в mongoid говорят]).У сайта есть дерево тегов
  • в сообщении есть массив тегов (подмножество тегов сайта, порядок не имеет значения)

Примеры использования, которые меня интересуют:

  1. Быстрое сохранение и извлечение тегов Сайта в древовидной форме (т. Е. Чтобы отображать их в виде дерева в пользовательском интерфейсе)
  2. Быстрый запрос того, какие посты Сайта имеютtag.

Без древовидной структуры http://github.com/wilkerlucio/mongoid_taggable решает мои сценарии использования.Я видел некоторые порты act_as_tree для Mongoid, такие как:

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

Кто-нибудь делал что-нибудь подобное, или есть какой-нибудь совет?В идеале мне бы понравилось решение Mongoid, но я также рад перейти на драйвер Ruby.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2010

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

Я бы, вероятно, сохранил бы сами теги в документе (внедренном), но если бы был какой-то шанс, что янужно перемещать узлы дерева в режиме онлайн, тогда я бы сохранил иерархию в другом документе.Запросы не должны быть медленными, если сначала выровнять поисковый запрос (в соответствии с текущим деревом), а затем выполнить поиск по этим тегам.Этот подход, вероятно, не будет хорошо масштабироваться, если в результате сглаженного поискового запроса будут содержаться сотни тегов (какого размера ваше дерево?).

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

0 голосов
/ 08 октября 2010

есть два реализованных шаблона древовидная структура mongodb

...