CouchDB — запросы с параметрами

Я новичок в CouchDB и знаю, что мое мышление, вероятно, все еще слишком много в сфере реляционных БД, но вот:

Похоже, что все запросы на Couch выполняются через Views. Я читал, что временные представления очень неэффективны, и их следует избегать в рабочей среде.

Итак, мой вопрос на самом деле заключается в том, как сделать эффективный запрос с параметрами (поскольку представления их не принимают). Например, если бы я использовал Couch для управления сайтом блога, мне пришлось бы создавать новое представление для каждого сообщения, эквивалентное «выбрать сообщение из сообщений, где id = 1».

Я понимаю, что я могу использовать lucene вместе с запросом для выполнения полнотекстового поиска по результатам, но это действительно полезно только для текстового контента, а не для чисел.

Я доволен созданием множества статических представлений, поскольку их можно очень просто создать на лету. Меня беспокоит то, что это не то, как предполагалось использовать Couch, и я что-то упускаю. Не стесняйтесь просветить меня.

Здоровья, Крис.


person Owen    schedule 13.08.2009    source источник


Ответы (1)


Представления принимают параметры URL, ключевым является тот, который вы ищете. Вы даже можете ограничить количество строк, которые вы получаете и сортируете.

Ваши представления могут быть проиндексированы произвольными ключами JSON. Это означает, что вы можете создать представление, которое выдает такие документы, как [username docid] => doc. Затем вы можете запросить это представление с помощью http://url/to/view?key=[username docid].

Вы можете создать представление, которое выдает [дата типа имени пользователя] => doc. Теперь вы можете получить все документы определенного периода между определенной датой (используя параметры startKey и endKey url).

Ваш пример блога — это тот, для которого CouchDB особенно хорошо подходит. На самом деле, я считаю, что это пример из готовящейся книги CouchDB от O'reilly.

Тем не менее, некоторые виды запросов не могут быть легко обработаны только CouchDB. Couchdb-lucene может помочь здесь. Не думайте, что это хорошо только для полнотекстового поиска. Я использовал его для выполнения общих сложных запросов к базе данных с хорошим эффектом.

person dnolen    schedule 13.08.2009