Репликация CouchDB на локальном диване уменьшает размер - почему? - PullRequest
2 голосов
/ 16 января 2012

Я недавно начал использовать Couch для большого приложения, над которым работаю.

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

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

После репликации я показываю, что в новой базе данных содержится правильное количество записей, но размер базы составляет около 1/3.оригинала.

Также немного странно, что если я обновляю футон, размер оригинала колеблется между 94,6 и 95,5 мб

Это оставляет меня с несколькими вопросами:

  1. 2-я база данных хранит ссылки на первую?Если да, могу ли я удалить первый, не причиняя вреда?

  2. Почему размер будет таким разным?Были ли изначально построены индексы, которые в конечном итоге будут иметь новые?

  3. Почему размер колеблется?

edit :

Несколько полезных вещей:

  • Это на облачной установке couchdb
  • Я проверил первую и последнюю запись нового БД, и они совпадают, поэтому я не верю, что футон занижает данные.

1 Ответ

7 голосов
/ 16 января 2012

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

  • Индексы b-дерева сбалансированы
  • Данные из старых версий документов отбрасываются.
  • Метаданные из предыдущих обновлений БД отбрасываются.

Репликации хранятся в / из контрольных точек, поэтому, если вы повторно реплицируете из того же источника в то же место (т. Е. Повторно запустили репликацию, для которой истек тайм-аут), она подхватит то место, где остановилась.

Ответы:

  1. Репликация не создает ссылку на другую базу данных. Вы можете удалить первый, не причиняя вреда.
  2. Репликация (и сжатие) обычно уменьшает использование диска. Если у вас есть какие-либо представления в любых проектных документах, они будут перестроены при первом запросе к ним. Индексы представления используют собственный файл .view, который также занимает место.
  3. Я не уверен, почему размер колеблется. Кэши браузеров и прокси - проклятие разработки CouchDB (и веб). Но, возможно, это также результат внутреннего поведения Cloudant (например, разные узлы в кластере сообщают о слегка разных размерах).
...