Есть ли в CouchDB способы повысить производительность процесса просмотра индекса? - PullRequest
4 голосов
/ 11 февраля 2012

У меня есть несколько основных видов и несколько карт / уменьшенных видов с логикой.Ничего сложного.Не слишком много документов.Я пробовал с 250k, 75k и 10k документов.Похоже, я всегда жду индексации представления.

Помогает ли лучший, более эффективный код в представлении?Я предполагаю, что это в основном обрабатывает представление на всех уровнях агрегации.Так что там должно быть какое-то улучшение.

Помогает ли emit () - меньше данных?emit (doc.id, doc) против указания меньшего количества полей?

Влияют ли более или менее сложные ключи на индексирование представления?

Или все дело в памяти, ядрах процессора и скорости процессора?

Должна быть какая-то документация, но я не могу найти никаких ссылок на способы повышения производительности.

Ответы [ 4 ]

2 голосов
/ 11 февраля 2012

Код, который вы пишете в представлениях, больше похож на CREATE INDEX, чем SELECT. не имеет значения сколько нужно времени, пока сборки представлений соответствуют скорости изменения документа.Построение представления - это скрытые (разовые) затраты.

Когда вы запрашиваете представление, это всегда сканирование двоичного дерева, которое работает со статическим набором данных за логарифмическое время.Обычно это производительность, которую люди волнуют больше (в производстве).

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

2 голосов
/ 11 февраля 2012

Я бы глубже взглянул на функцию уменьшения. Попробуйте использовать встроенные функции Erlang, такие как _sum, _count, вместо написания Javascript.

Сложные представления могут занимать часы и более, это нормально.

Возможно выложить такую ​​не слишком сложную карту / уменьшить.

И не забывайте: индексирование всех документов выполняется только один раз после изменения вида (или отправки целой пачки новых документов). Последующие новые документы индексируются постепенно.

Используйте представление с &stale=ok для мгновенного извлечения «старых» данных, поэтому вам не придется ждать. (Но обратите внимание: вам всегда нужно вызывать представление без stale=ok хотя бы один раз, чтобы запустить процесс индексации). Или лучше: используйте stale=update_after.

0 голосов
/ 06 мая 2014

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

Couchappy - бесплатный высокопроизводительный хостинг Couchdb , который позволяет вам попробовать последние версии Apache CouchDB поверх SSD-дисков.

0 голосов
/ 11 февраля 2012

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

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