The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Реализация системы репликации для SQLite

27.12.2009 19:40

Увидела свет утилита sqlite3-rdiff, предназначенная для организации репликации данных между несколькими БД SQLite. Утилита поддерживает три базовые операции:

  1. Формирование файла хэш-сигнатур, отражающих текущее состояние всех записей БД.
  2. Генерацию delta-патча на основе сравнения текущего состояния базы с состоянием отраженным в файле сигнатур.
  3. Обновление данных в БД на основе заданного delta-патча:

Сигнатуры вычисляются с использованием хэш-функции MurmurHash для всех данных одной строки или группы строк базы. Размер файла сигнатур занимает около 10% от размера исходной базы, но имеется возможность вычисления и проверки сигнатур сразу для нескольких строк, что позволяет значительно сократить размер файла сигнатур за счет увеличения размера delta-патча. Примечательно, что при генерации одной сигнатуры для N-строк, размер файла с сигнатурами уменьшается в N раз. Группировку предпочтительно использовать для баз большого размера, данные в которых изменяются не часто.

Пример по доведению необновленной версии slave.db до актуальной БД master.db:


   sqlite3-rdiff --rows-per-hash 16 signature slave.db slave.db.sign
   sqlite3-rdiff delta slave.db.sign master.db slave.db.delta
   sqlite3-rdiff patch slave.db slave.db.delta slave.db

В итоге, для slave.db размером 1.5 Гб будет сгенерирован патч slave.db.delta размером 4.3 Мб и файл сигнатур slave.db.signature размером 13 Мб. В данный пример (--rows-per-hash 16) сигнатура создается для 16 строк таблицы, если формировать сигнатуру для каждой строки, то итоговые файлы будут следующего размера: slave.db.delta - 3.4 Мб, slave.db.signature - 160 Мб.

  1. Главная ссылка к новости (http://sqlite.mobigroup.ru/src...)
Автор новости: Veter
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/24835-sqlite
Ключевые слова: sqlite, replication
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (2) RSS
  • 1, Аноним (-), 23:43, 27/12/2009 [ответить]  
  • +/
    Интересно, а когда это в федоре примянят, там база юма в sqlite и через полгода после релиза начинает ощутимо долго ее выкачивать при упдейте.
     
     
  • 2, anonymous (??), 12:00, 31/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    А я-то всё думаю.. Для рпм дельты уже ввели, а тут до сих пор нет?
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру