Является ли Couchbase упорядоченным хранилищем ключей и значений?

Документы в Couchbase хранятся в ключевом порядке? Другими словами, позволят ли они выполнять эффективные запросы для извлечения всех документов с ключами, попадающими в определенный диапазон? В частности, мне нужно знать, верно ли это для Couchbase lite.


person Simone    schedule 08.02.2015    source источник
comment
Принятый ответ правильный, но представления предназначены для индексации, а не для поиска документов. Извлечение выполняется путем запроса данного ключа, а поскольку документы хранятся в оперативной памяти, то, в каком именно порядке они хранятся, не имеет значения для целей извлечения.   -  person theMayer    schedule 10.02.2015


Ответы (1)


Эффективность запросов коррелирует с построением представлений, которые добавляются на сервер.

Couchbase/Couchbase Lite хранит только индексы, указанные и сгенерированные программистом в этих представлениях. Поскольку Couchbase ребалансирует, он перемещает документы между узлами, поэтому кажется непрактичным, чтобы порядок ключей мог быть гарантирован или согласован.

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

Поиск документов Couchbase выполняется с помощью запросов map/reduce в представлениях:

Представление создает индекс данных в соответствии с определенным форматом и структурой. Представление состоит из определенных полей и информации, извлеченной из объектов в Couchbase. Представления создают индексы для вашей информации, что позволяет выполнять операции поиска и выбора данных.

источник: введение к представлениям

Представление создается путем повторения каждого отдельного документа в корзине Couchbase и вывода указанной информации. Результирующий индекс сохраняется для использования в будущем и обновляется новыми данными, сохраняемыми при доступе к представлению. Этот процесс является инкрементальным и, следовательно, оказывает незначительное влияние на производительность. Создание нового представления для существующего большого набора данных может занять много времени, но обновление данных происходит быстро.

источник: Основные сведения о Views

введите здесь описание изображения

источник

и, наконец, раздел о преобразовании SQL в map/reduce. может быть полезно:

В общем, для каждого предложения WHERE вам нужно включить соответствующее поле в ключ сгенерированного представления, а затем использовать ключ, ключи или комбинации startkey/endkey для указания данных, которые вы хотите выбрать.

В заключение, представления Couchbase постоянно обновляют свои индексы, чтобы обеспечить оптимальную производительность запросов. Couchbase Lite похож на запрос, однако механика сервера немного отличается:

Индексы просмотра обновляются по запросу при запросе. Таким образом, после изменения документа следующий запрос к представлению вызовет функцию отображения этого представления для нового содержимого документа, обновив индекс представления. (Но помните, что вы не должны писать код, который делает предположения о том, когда вызываются функции сопоставления.)

Как улучшить индексацию вашего представления: главное, что вы можете контролировать, — это производительность вашей функции карты, как время ее выполнения, так и количество объектов, которые она выделяет. Попробуйте профилировать свое приложение во время индексации представления и посмотрите, много ли времени тратится на функцию карты; если да, оптимизируйте его. Посмотрите, сможете ли вы обойти функцию карты и отказаться от нее раньше, если документ не относится к типу, который будет создавать какие-либо строки. Также посмотрите, можете ли вы выдавать меньше данных. (Если вы передаете весь документ как значение, не делайте этого.)

из Couchbase Lite — View

person Andy    schedule 08.02.2015
comment
Обратите внимание, что это Couchbase, а не CouchBase. - person Matt Ingenthron; 08.02.2015
comment
Представления упорядочиваются на сервере Couchbase: blog.couchbase.com/understanding-letter-ordering -просмотр-запросов - person Paddy; 09.02.2015