Как вы обрабатываете отношения в базе данных NoSQL? - PullRequest
11 голосов
/ 14 февраля 2011

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

Другими словами, я могу использовать индексы для фильтрации результатов. Не только первичный ключ.

Однако, с документом и значением ключа NoSQL, я не могу понять, как я мог бы использовать их для гораздо большего, чем для текстового дампа. Единственное, что вы можете сделать, это получить значение по идентификатору.

Мне нужны некоторые примеры того, как вы моделируете данные в NoSQL, когда вы больше не можете использовать индексы или фильтры. Как вы сортируете и ищете данные?

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

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

Если вам нужно искать вещи в хранилище Key-Value, основываясь на значениях , вам нужно получитьтворческий.Вы можете:
1) Создать свои собственные ключи, которые указывают на оригинальные ключи, а затем поддерживать эти пары при новых вставках, обновлениях и удалениях исходных пар.
2) Просто посмотрите на каждое значение, грубую силу,в автономном режиме, один раз в день и сохранить ответ где-нибудь.Понятно, что это не сработает, если вам нужны новые данные сразу.

Сортировка данных, вероятно, потребуется выполнить на прикладном уровне или с использованием пользовательских отсортированных наборов, если вы используете метод (1) и Redis.

0 голосов
/ 15 февраля 2011

Какую базу данных NoSQL вы используете? Berkeley DB , например, поддерживает вторичные индексы .

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