2008-09-23 3 views
18

Насколько я понимаю, индексы CouchDB обновляются при просмотре представления. Предполагая, что есть больше чтений, чем пишет, разве это не плохо для масштабирования? Как настроить CouchDB для обновления индексов при записи или, еще лучше, по расписанию?Как вы планируете обновление индексов в CouchDB

ответ

26

CouchDB восстанавливает представления при обновлении, но только на том, что изменилось с момента последнего доступа к просмотру. Предполагая, что ваш объем чтения значительно перевешивает ваш объем записи, это не должно быть проблемой.

Когда вы меняете большое количество документов одновременно, это может привести к тому, что первые запросы на чтение займет заметное количество времени. Чтобы облегчить это, было предложено несколько разных возможностей. Большинство полагается на регистрацию с уведомлением об обновлении и запуском обновлений CouchDB.

Пример сценария для выполнения именно того, что доступно на вики CouchDB в [1].

[1] http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate

+0

Есть ли способ, чтобы распространить расчет индекса на несколько машин или это делается автоматически при репликации установлена? – 2012-10-02 11:01:43

+0

@ThomasFankhauser: sharding?см. BigCouch – OrangeDog 2012-10-30 10:13:27

5

Вы не можете, а также, почему вы хотите этого?

Подумайте об этом так:

  • При импорте данных в MySQL вы можете превратить из indizes, потому что это более дорогой для обновления индекса для каждой строки при вставке, чем обновлять индекс для 100 записывает (или сколько угодно строк) в один проход.
  • Именно поэтому CouchDB обновляет индекс при чтении, потому что менее затратно интегрировать эти 100 изменений в одно и то же время, а затем каждый изменяется, когда он написан.

Это одно из преимуществ CouchDB! :) Я не говорю, что это только функция CouchDB, но это просто умно, чтобы делать это при чтении.

Одна вещь, которую вы можете сделать, это прочитать с помощью update = false, который является грязным и может не возвращать то, что вы ожидаете. Если вы всегда это делаете, вы можете запланировать «регулярное» чтение через cronjob и обновить свой индекс. Я просто не думаю, что это имеет смысл.

9

a) «Масштабирование» является таким перегруженным термином. К какому «виду» масштабирования вы относитесь? (В любом случае, я не вижу, как это негативно влияет на вас).

b) Обновление при записи: просто запросите свой вид после записи. Обратите внимание, что добавление буфера данных в индекс более дружелюбен к ресурсам (что не относится к CouchDB). Таким образом, вы можете запускать свое представление каждый N записи.

c) Запланировано: настроить крону, которая запрашивает ваш просмотр каждые M минут.

d) Подождите, пока CouchDB будет развиваться, чтобы предоставить вам инфраструктуру, которая позволит вам установить ее с помощью параметра конфигурации.

e) (ЛУЧШИЙ ВАРИАНТ). Потрогайте руки и помогите нам полировать CouchDB! Любые вклады высоко оценены.

d) RTFM (blink :)

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