Как вы планируете обновления индекса в CouchDB?

StackOverflow https://stackoverflow.com/questions/122298

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Пример сценария, позволяющего сделать именно это, доступен на вики CouchDB по адресу [1].

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

Другие советы

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

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

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

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

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

г) РТФМ (моргать :)

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top