Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 23:46   #1
To_wave
 
Регистрация: 12.02.2012
Сообщений: 5
По умолчанию Синхронизация локальной БД mySQL с удаленной

Все доброго времени суток.
Нужно помощь в решении следующей задачи.
На удаленном сервере есть БД.
Ее копия есть, скажем на 2х компьютерах.
1. Как сделать так, чтобы изменения сделанные на компьютере в локальной БД синхронизировались с удаленной БД?

Например.
Имеется БД. с таблицами table1, table2.
Есть приложение, установленное на 2х компьютерах.
В первом приложении загружаются данные с БД.table1, во втором БД.table2.
На первом компе есть локальная копия БД.table1, на втором БД.table2.
Нужно, чтобы изменения в одной из таблиц сохранялось и в локальной копии и в удаленной. При этом учесть тот момент, что интернет не стабильный и если отсутствует подключение к интернету, то изменения сохранить в локальной копии, а при подключения изменения сохранить с удаленной.
To_wave вне форума Ответить с цитированием
Старый 13.02.2012, 05:38   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

А на хрена? Опишите необходимость такой задачи при использовании полноценной СУБД? Что вы реализуете? Почему нельзя сделать так чтоб все клиенты цеплялись к одной БД?
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 13.02.2012, 14:40   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Синхронизация баз в реальном времени? Круто. Причем, если нет интернета - пишется в одну базу, а если он вдруг появился - начинает писать в другую.
Чего только люди не придумают...
_SERGEYX_ вне форума Ответить с цитированием
Старый 13.02.2012, 17:29   #4
To_wave
 
Регистрация: 12.02.2012
Сообщений: 5
По умолчанию

Зачем мне это надо.
По факту открыл ИП в сфере услуг. Есть приемка. Для этой приемки написал небольшую программку, которая меня вполне устраивала.
Но стал вопрос открытия 2й точки. и можно было бы и в ней поставить туже программу, НО сложнее контролировать ситуацию, а так например я дома подключился к интернету, проверил какая точка работает (on-line) какие и сколько клиентов поступило, какие услуги были оказаны конкретным клиентам и т.д.

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

Примерно понятно что хочу реализовать?
To_wave вне форума Ответить с цитированием
Старый 13.02.2012, 17:30   #5
To_wave
 
Регистрация: 12.02.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Чего только люди не придумают...
предложите свое решение данной задачи
To_wave вне форума Ответить с цитированием
Старый 13.02.2012, 17:53   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Переносите базу на платный хостинг. Есть такие, где поддержка трех MySQL обойдется вам в 130 руб в месяц. Думаю, это не обременительно ни для кого, даже для пенсионеров
При подключении с любого компьютера, находящегося в вашей системе, все они работают с одной базой. Вот самое простое решение.
И нет проблем с синхронизацией.
Прик вне форума Ответить с цитированием
Старый 13.02.2012, 18:40   #7
To_wave
 
Регистрация: 12.02.2012
Сообщений: 5
По умолчанию

С хостингом проблем нет. Просто тут проблема будет следующей - нет возможности провести хороший интернет. Максимум что можно - 3G модемы, которые у нас работают не стабильно. Поэтому и хочется сделать так, чтобы при отсутствии интернета данные сохранялись в локальной БД, а при подключении к интернету - удаленная БД обновлялась.
To_wave вне форума Ответить с цитированием
Старый 14.02.2012, 01:00   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
предложите свое решение данной задачи
Я делал нечто подобное - только наоборот... На сервере в интернете лежит база в которой есть несколько таблиц с настройками (там хранятся цены на товары, стоимости услуг, формулы расчетов для налоговой и т.п.). К этим таблицам имеет доступ только шеф, юзеры их вообще не видят.

На точках работают менеджеры и имеют локально точно такую же БД, в которой эти таблицы с настройками идентичны, а рабочие таблицы у каждого свои. После того, как менеджер заполнил и рассчитал заказ он жмет кнопку "Отправить заказ на сервер". Заказ добавляется в серверную базу с пометкой с какой именно точки он поступил. И шеф в реальном времени видит поступление заказов в фирму.

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

Еще делал такую фишку: после изменения настроек шеф жмет кнопку "Оповестить менеджеров" и всем менеджерам по протоколу UDP приходит сообщение, мол, "обновите базу". Но эта штука не прижилась.
Еще он хотел заставить меня сделать автоматическое обновление по таймеру, что я делать категорически отказался вплоть до увольнения.

Но в любом случае несколько баз - это головная боль.
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.02.2012, 08:50   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А на хрена?
Зря. Репликации во все времена приветствовались на ура.
Цитата:
и на каждой точке своя подбаза, которая синхронизируется с общей.
Эм... Може я и не в тему, но тупо несколько раз проводить запросы в доппотоках на разные серверы. Если связь отсутствует, накапливать их в долгий буффер пока не появится.

Кстати а чтива по репликациям для твоей СУБД разве нет?

Цитата:
чтобы при отсутствии интернета данные сохранялись в локальной БД, а при подключении к интернету - удаленная БД обновлялась.
Плюсую. Задумка верная, ИМХО.
Топай искать чтиво по репликации, если Мускул такое поддерживает то лучше пусть сам этим занимается - надежнее будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2012, 22:44   #10
To_wave
 
Регистрация: 12.02.2012
Сообщений: 5
По умолчанию

А как Вы считаете, на сколько правильным и не глючным будет такой способ:
При наличии подключения запросы делаются и к удаленной и к локальной бд (вопрос только как правильно организовать одновременно 2 подключения).
При отсутствии интернета запросы делаются только к локальной БД и сохраняются в лог-файл на машине, при подключении к интернету выполняется запрос к удаленной БД из лог-файла.

Или уж сильно извращенски?
To_wave вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение к удаленной бд mysql antonweb C/C++ Базы данных 1 06.04.2011 16:40
Подключение к удаленной БД(MySQL) и работа с ней! IIpopoK БД в Delphi 2 29.12.2010 21:31
Соединение программы с удаленной mysql базой Dominatorsha Общие вопросы Delphi 11 15.12.2010 13:31
Хостинг с удаленной mySQL apromix SQL, базы данных 0 16.05.2009 17:28
Connect с удаленной базой MySQL _SERGEYX_ БД в Delphi 1 26.08.2008 14:06