Как вы планируете обновления индекса в CouchDB - PullRequest
18 голосов
/ 23 сентября 2008

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

Ответы [ 3 ]

26 голосов
/ 23 сентября 2008

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

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

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

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

9 голосов
/ 23 сентября 2008

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

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

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

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

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

d) RTFM ( мигание :)

5 голосов
/ 23 сентября 2008

Вы не можете, а также зачем вам это нужно?

Думайте об этом так:

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

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

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

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