couchdb продолжает расти (размер файла)

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

Я наблюдала, как моя /var/lib/couchdb/_dbs.couch файл, и он никогда не уменьшался в размере. Простой пример:

curl -X PUT http://admin:secretpassword@localhost:5984/testdb

_dbs.couch увеличение размера файла на 5 кб.

curl -X DELETE http://admin:secretpassword@localhost:5984/testdb

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

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

это "работает как задумано" или что-нибудь здесь неправильно?

что более важно: что я могу поделать?

1 ответов


он работает по назначению, вы просто не смотрите на правильные файлы.

каждая база данных имеет соответствующие файлы с тем же именем.

например:

curl -X PUT http://admin:secretpassword@localhost:5984/testdb

curl -X PUT http://admin:secretpassword@localhost:5984/emaildb

  • так как у вас есть _dbs.файл couch, вы, вероятно, используете CouchDB 2.Х. Х с функцией сегментирования. Он создаст несколько файлов в подпапках папки" shards".

data/ +-- shards/ | +-- 00000000-7fffffff/ | | -- emaildb.124456678.couch | | -- testdb.647948447.couch | +-- 80000000-ffffffff/ | | -- emaildb.124456678.couch |___|____-- testdb.647948447.couch

больше информация: http://docs.couchdb.org/en/latest/cluster/sharding.html

  • в двух словах, функции sharding и cluster позволяют вам иметь распределенную базу данных с распределенными вычислениями map / reduce. В приведенном выше примере каждый dbs имеет 2 осколка, что означает, что каждая база данных охватывает более двух файлов. Каждый новый созданный документ может оказаться в одном из этих двух. Однако использование диска не будет равномерно распределено. Например, если каждый документ является небольшим документом json, но один из них получает вложение 1GB (http://docs.couchdb.org/en/latest/intro/api.html#attachments), только один осколок получит удар 1GB. Осколок основан на doc. Вы можете иметь 2 осколка, вы можете иметь 20, и они не все должны быть на одном сервере (http://docs.couchdb.org/en/latest/cluster/theory.html). Если вы знаете, что на одном сервере не хватает места для хранения всех ваших данных, вы можете установить до 20 серверов в базе данных CouchDB, которые каждый проведет 1 осколок (примерно 1/20 из всех документов). Будь то один узел в подвале или кластер серверов couchdb по всему миру, для клиентского приложения (curl, pouchdb, firefox и т. д.) Это один и тот же api.

  • база данных _dbs (_dbs.couch) записывает информацию для каждого dbs для управления кластером и осколками. Его размер увеличивается, потому что каждый раз, когда вы создаете и удаляете базу данных, она обновляется (копирование при записи). От CouchDB 2.1.0 и за его пределами он будет автоматически компактным. Вы можете проверить параметры автоматического уплотнения в конфигурации сервера.(в браузере: http://localhost:5984/_utils/#/_config/, compactions разделы). Панель администратора находится на другом порту:http://localhost:5986/_utils

  • размер, сообщенный в Fauxton, является "активным размером". Не учитывает удаленные документы на диске, которые будут удалены после уплотнения. curl http://localhost:5984/testdb дадут дополнительную информацию, как размер на диске (http://docs.couchdb.org/en/latest/api/database/common.html#get--db).