2009-12-03 4 views
1

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

Любой способ заставить «пересчитать» весь вид (по всем записям)?

ответ

1

Раздел «Просмотр индексов в Technical Overview» - отличное руководство для этого.

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

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

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

+0

ОК, это делает намного больше смысла, чем я представлял себе это в своей голове. +1 умный трюк, чтобы восстановить вид. – BuddyJoe

+1

Я полагаю, что в последних версиях CouchDB (например, .10.1) используется функция просмотра проектного документа, чтобы решить, следует ли перестраивать представление. Таким образом, повторная вставка проектного документа * может * не обновлять представление. Конечно, обновление с новой функцией просмотра будет, однако. –

+0

@barry, это очень интересно, и это имеет смысл. У вас есть какие-либо ссылки на то, где я мог бы больше узнать о хэшах функций представления? –

 Смежные вопросы

  • Нет связанных вопросов^_^