CouchDB View, карта, индекс и последовательность - PullRequest
1 голос
/ 03 декабря 2009

Я думаю, что где-то читал, что при запросе «Карта» запускается только для тех документов, которые были добавлены с момента последнего запроса? Как это определяется? Я думал, что видел что-то о порядковом номере. Это то, что вы можете получить? Это не часть UUID-трейлинга в поле _rev?

Есть ли способ вызвать «пересчет» всего представления (по всем записям)?

1 Ответ

1 голос
/ 03 декабря 2009

Раздел о индексах представлений в Техническом обзоре является отличным руководством к этому.

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

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

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

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