Репликация pouchdb с coachdb: очень медленно

У меня есть база данных ~ 10 000 записей (~ 30 мес, без вложений) в моей CouchDB.

Используя Pouchdb на стороне браузера, при репликации с дивана требуется некоторое время для завершения...

Что меня удивляет, так это количество запросов, которые мой диван получает во время него (тысячи!, я думаю, столько же, сколько документов) — это нормально?

Есть ли способ «упаковать» эти запросы и в целом ускорить процесс репликации?

Спасибо.


person abernier    schedule 14.10.2014    source источник
comment
Не имеет строгого отношения к вашему вопросу, но явное использование websql в качестве локального адаптера сильно повлияло на скорость моих приложений: new PouchDB('name', { adapter: 'websql'})   -  person datashaman    schedule 01.11.2014


Ответы (1)


Я предполагаю, что вы используете функцию PouchDB.replicate

В этом случае попробуйте изменить параметр batch_size:

PouchDB.replicate('mydb', 'http://localhost:5984/mydb', {batch_size: large_val})

где large_val больше, чем значение по умолчанию 100. Чем выше значение, тем быстрее должна идти репликация, но тем больше памяти она будет использовать, так что будьте осторожны.

См. справку по API.

Изменить: также обратите внимание на параметр batches_limit, который по умолчанию равен 10. Именно столько запросов может выполняться параллельно в любое время, поэтому количество документов в памяти равно batch_size * batches_limit.

person Tom Grant    schedule 24.10.2014
comment
Предполагая, что у меня 10 тысяч записей, если я установлю bacth_size на 10000, у меня будет только 1 запрос? - person abernier; 25.10.2014
comment
@abernier Это идея. Один из лучших способов сократить время, необходимое для такой репликации базы данных, — свести к минимуму количество запросов, поэтому установите его как можно больше безопасно. Каждая из этих 10000 записей будет загружаться в память одновременно, поэтому убедитесь, что на устройстве, на которое вы загружаете, достаточно памяти. Обратите внимание на редактирование в моем ответе, относящееся к batches_limit. - person Tom Grant; 25.10.2014