Страница 1 из 2
Синхронизация локальной БД с сервером
Добавлено: 17.06.2012 21:44:48
Delphi
Есть бд на сервере и есть несколько клиентов.
Нужно сделать так, чтобы клиент работал с локальной БД, а при появлении интернета(он есть не всегда) обе БД синхронизировались.
Подскажите, пожалуйста, как правильно сделать?
Спасибо
Re: Синхронизация локальной БД с сервером
Добавлено: 17.06.2012 22:21:53
ronin
какая бд?
Re: Синхронизация локальной БД с сервером
Добавлено: 17.06.2012 22:41:35
Delphi
ronin писал(а):какая бд?
На сервере сейчас MySQL, локальной пока нет.
Re: Синхронизация локальной БД с сервером
Добавлено: 17.06.2012 23:03:59
Little_Roo
Delphi писал(а):Нужно сделать так, чтобы клиент работал с локальной БД, а при появлении интернета(он есть не всегда) обе БД синхронизировались.
Не понял идею...
Предположим, инета нет -> базы у клиентов локальные - так?
Клиент А -> добавил-удалил-отредактировал запись, отвалил...
Клиент Б -> добавил-удалил-отредактировал другую запись...и тут инет появился...синхронизация...и вся работа клиента А коту ректально...
Синхронизация локальная-сетевая как должна работать?
Вариантов можно еще придумать...
Или описанная проблема криво сформулирована, либо ой...
Re: Синхронизация локальной БД с сервером
Добавлено: 17.06.2012 23:11:51
Delphi
Извините, если плохо сформулировал вопрос.
Тогда нужно синхронизировать только изменения, а не всю бд.
Юзер вообще не должен почувствовать есть/нет интернета.
Редактирование 1 записи 2-умя пользователями одновременно исключено.
Re: Синхронизация локальной БД с сервером
Добавлено: 17.06.2012 23:37:41
Brainenjii
когда инет отрубается - начинать вести лог действий с базой. Как только появляется - отправлять лог на сервер, где обрабатывать...
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 00:49:14
Delphi
Brainenjii писал(а):когда инет отрубается - начинать вести лог действий с базой. Как только появляется - отправлять лог на сервер, где обрабатывать...
Вот я так сначала и хотел сделать.
Но есть проблема.
В программе есть таблица, данные в которую идут из MySQL на сервере.
Нужно сделать так, что бы юзер мог смотреть эту таблицу (выбирая нужную дату) в оффлайн режиме тоже.
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 03:58:00
Vadim
Delphi писал(а):Нужно сделать так, что бы юзер мог смотреть эту таблицу (выбирая нужную дату) в оффлайн режиме тоже.
Если Вы получили данные запросом из этой таблицы, когда связь с сервером есть, то пока Вы этот запрос не закроете, этот набор данных завсегда будет на клиенте - пусть смотрит и выбирает, что хочет и когда хочет.
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 07:12:50
xcod
в mysql есть свои механизмы репликации данных
мжт это будет возможно использовать
сам не пользовал, все в теории

Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 09:11:05
Delphi
Vadim писал(а):Delphi писал(а):Нужно сделать так, что бы юзер мог смотреть эту таблицу (выбирая нужную дату) в оффлайн режиме тоже.
Если Вы получили данные запросом из этой таблицы, когда связь с сервером есть, то пока Вы этот запрос не закроете, этот набор данных завсегда будет на клиенте - пусть смотрит и выбирает, что хочет и когда хочет.
А если при запуске программы уже нет интернета?
По идеи нужно как-то организовать локальную бд + на сервере, но как сделать?
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 12:31:18
alexey38
Можно и не сложно написать свою технологию синхронизации.
В таблицы, которые могут изменяться введите поля с пользователем и временем модификации.
Также храните время последней синхронизации. Далее потабличные выборки на своей и серверной стороне.
Все остальное уже техника.
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 14:10:19
Ism
Может это поможет
Репликация в MySQL
http://www.mysql.ru/docs/man/Replication.htmlКак вариант сделать в программе локальную базу MySql в Embedded режиме , сливать данные туда, а при соединении сбрасывать на сервер
http://dev.mysql.com/doc/refman/5.1/en/libmysqld.html
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 14:18:47
Delphi
Наверное такой вариант подойдет лучше всего.
1 БД на сервере (MySQL)
1 БД у клиента (LiteSQL3, но лучше MySQL, правда тогда поднимать локальный MySQL)
Клиент работает с локальной бд, все команды записываются в лог.
При подключении к интернету команды из лог идут на сервер, а потом сливаем MySQL с сервера клиенту.
Варианта, что 2 клиента отредактировали 1 запись одновременно быть не должно.
Пройдет такая схема?
Ism, спасибо за ссылки, пошёл читать.
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 17:59:14
Vadim
Ism писал(а):Как вариант сделать в программе локальную базу MySql в Embedded режиме
Если я ничего не путаю, Embedded-режим в MySQL только для коммерческого применения.
Re: Синхронизация локальной БД с сервером
Добавлено: 18.06.2012 18:40:31
Ism
Не знал