Intereting Posts
Кордова default.xml URI не зарегистрирован Как получить доступ к звуковым сигналам по умолчанию для Android? Android Fragment – переход от одного вида к другому? Как добавить дополнительное пространство внутри дна GridView Ошибка: тегу <item> требуется атрибут «drawable» или дочерний тег, определяющий возможность рисования Нарушение счетчика активности экземпляра StrictMode (2 экземпляра, 1 ожидается) при вращении полностью пустой активности Может ли веб-страница быть в курсе виртуальной клавиатуры Android Отображать предупреждение, когда интернет-соединение недоступно в приложении для Android Как отобразить карту QuickContact из виджета Navigator.geolocation.getCurrentPosition всегда получает тайм-аут в Android до тех пор, пока GPS / Location не будет Как избежать черного экрана при запуске, когда установлен FLAG_ACTIVITY_CLEAR_TASK? Как перезагрузить эмулятор в режим восстановления Текущие установки Google Play превышают активные установки Подходящие папки для различных комбинаций размеров экрана и плотности Android – как установить изображение обоев

Android sqlite двунаправленная синхронизация sqlite

Мне нужно синхронизировать мою базу данных Android SQLite с моей облачной СУБД и делать это в двунаправленном режиме в многопользовательской среде.

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

Solutions Collecting From Web of "Android sqlite двунаправленная синхронизация 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 для реализации синхронизации.

Используя звездную топологию, мы открываем базу данных на сервере в качестве основного узла, используя модифицированный 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" 

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