Способ репликации базы данных sqlite на нескольких серверах - программирование
Подтвердить что ты не робот

Способ репликации базы данных sqlite на нескольких серверах

Я разрабатываю приложение, которое работает распределенным, и у меня есть база данных SQLite, которая должна быть распределена между распределенными серверами. Если я нахожусь в serverA и меняю строку sqlite, это изменение должно быть на других серверах мгновенно, но если сервер был отключен, а затем он появился в сети, он должен обновить всю информацию, равную другим серверам.

Я пытаюсь разработать службу HA с небольшими базами данных SQLite.

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

Есть ли библиотека или другая методология SQL для обмена данными между серверами?

Спасибо заранее.

4b9b3361

Ответ 1

Я использовал согласованный протокол Raft для репликации своей базы данных SQLite. Вы можете найти систему здесь:

https://github.com/rqlite/rqlite

Ответ 2

Вы можете использовать litereplica:

Он поддерживает репликацию master-slave для баз данных SQLite3 с использованием одного ведущего (записываемый node) и одного или нескольких реплик (узлы только для чтения).

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

Или litesync:

Он реализует репликацию с несколькими мастерами, поэтому мы можем писать в db в любом node, даже если устройство отключено.

В обоих случаях мы открываем базу данных с использованием измененного URI, например:

  "file:/path/to/app.db?replica=master&bind=tcp://0.0.0.0:4444"

Ответ 3

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

Ответ 4

Вы также можете использовать CopyCat, которые поддерживают SQLite, а также несколько других типов баз данных.