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

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

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


person Juanin    schedule 24.10.2010    source источник


Ответы (2)


Можете ли вы использовать Oracle Database в качестве базы данных на стороне сервера?

Если это так, вам следует рассмотреть Oracle Database Lite, который включает в себя решение для полной синхронизации, совместимое с SQLite и Android и предназначенное для многопользовательских сред.

Он поддерживает автоматическую синхронизацию, расширенное разрешение конфликтов и несколько моделей синхронизации. Он также поддерживает развертывание и управление приложениями с центральной консоли управления и даже управление устройствами.

Подробнее об этом можно прочитать здесь: http://www.oracle.com/technetwork/database/database-lite/overview/index.html

Кроме того, вы можете щелкнуть вкладку загрузки, чтобы попробовать ее самостоятельно.

Эрик

person Eric Jensen    schedule 02.02.2011
comment
Спасибо, Эрик, но я использую PostgreSQL вместо Ubuntu. Oracle слишком дорог для этого проекта. - person Juanin; 03.02.2011

Я бы рекомендовал отправить файл db на ваш сервер и выполнить слияние на стороне сервера. Затем отправьте объединенную базу данных обратно клиенту, если это необходимо. Ваше решение будет зависеть от алгоритма разрешения конфликтов и схемы вашей базы данных. Но вот пример для самого простого случая:

sqlite> attach 'client.db3' as ClientDBtoMerge;           
sqlite> insert into TableName select * from ClientDBtoMerge.TableName;
sqlite> detach database ClientDBtoMerge; 

Надеюсь, вы сможете изменить пример для двунаправленного слияния.

person cement    schedule 27.10.2010
comment
Может быть решением для резервного копирования в однопользовательской среде. Но для многопользовательского не может. Спасибо, в любом случае. - person Juanin; 27.10.2010
comment
Почему нет? Вы можете иметь основную базу данных на сервере и объединять ее по запросу или все вместе. Или вам нужна синхронизация в реальном времени между базами данных? В случае, если вы говорите о репликации, которая невозможна, потому что вам нужно 100% онлайн-времени всех ваших клиентских телефонов. - person cement; 27.10.2010