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



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

539   3  

3 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.