Целесообразно ли создавать объект соединения при использовании базы данных NoSQL? - PullRequest
2 голосов
/ 04 июля 2011

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

Теперь я могу просто добавить строку тега для каждого объекта, а затем MapReduce ответить назапрос.

Или я мог бы отбросить строку и создать объект TagAssociation, который связал бы Tag ObjectID с другим ObjectID (например, Company, User, TimeSeries).Тогда я мог бы выполнять эти запросы быстрее и без MapReduce.Но потом я чувствую, что просто использую RDBMS с дружественным интерфейсом NoSQL.Являются ли эти объекты объединения в NoSQL разумной практикой или я не использую NoSQL должным образом?

Ответы [ 2 ]

1 голос
/ 21 августа 2012

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

Еще один способ - это playOrm, который может выполнять объединения и тому подобное (НО на разделах, НЕ на всей таблице).Таким образом, если вы могли бы получить раздел для января или раздел для учетной записи 1234 и запросить его с помощью обычного SQL и присоединить его к чему-то еще.playOrm выполняет индексацию за вас, используя типовые шаблоны индексации noSQL за кулисами.

позже, Дин

1 голос
/ 05 июля 2011

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

Кроме того, задумывались ли вы о том, как вы будете запрашивать объект TagAssociation? Разве это не будет использовать MapReduce для запроса свойств тега и компании?

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