Мне нужно синхронизировать мою Android-версию SQLite с моей облачной СУБД и делать это в двунаправленном режиме в многопользовательской среде.
Я нашел и ознакомился с решением здесь, но я хотел бы прочитать о лучшем решении/алгоритме.
Мне нужно синхронизировать мою Android-версию SQLite с моей облачной СУБД и делать это в двунаправленном режиме в многопользовательской среде.
Я нашел и ознакомился с решением здесь, но я хотел бы прочитать о лучшем решении/алгоритме.
Можете ли вы использовать Oracle Database в качестве базы данных на стороне сервера?
Если это так, вы должны рассмотреть Oracle Database Lite, который включает полное решение синхронизации, совместимое с SQLite и Android, и было разработано для многопользовательских сред.
Он поддерживает автоматическую синхронизацию, расширенное разрешение конфликтов и несколько моделей синхронизации. Он также поддерживает развертывание и управление приложениями с центральной консоли управления и даже управление устройствами.
Подробнее об этом можно прочитать здесь: http://www.oracle.com/technetwork/database/database-lite/overview/index.html
Кроме того, вы можете нажать на вкладку загрузки, чтобы попробовать сами.
Эрик
Я бы рекомендовал отправить файл db на ваш сервер и слить его на сервер. Затем при необходимости отправьте объединенный db обратно клиенту. Ваше решение будет зависеть от алгоритма разрешения конфликтов и схемы базы данных. Но вот пример для простейшего случая:
sqlite> attach 'client.db3' as ClientDBtoMerge;
sqlite> insert into TableName select * from ClientDBtoMerge.TableName;
sqlite> detach database ClientDBtoMerge;
Надеюсь, вы сможете изменить пример для двунаправленного слияния.
Другой вариант - litesync
Это модификация библиотеки SQLite для реализации синхронизации.
Используя звездообразную топологию, мы открываем базу данных на сервере в качестве первичного node с использованием модифицированного URI, например:
"file:/path/to/app.db?node=primary&bind=tcp://0.0.0.0:port"
И на мобильных устройствах мы открываем локальную базу данных, используя:
"file:/path/to/app.db?node=secondary&connect=tcp://server:port"
При первом открытии приложения в устройстве (и он-лайн) он загружает новую копию базы данных, и с этой точки мы можем писать на локальную базу данных, даже когда устройство отключено. Новые транзакции будут синхронизированы, если устройство снова подключено к сети.