Копирование

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
mdsf
Сообщения: 36
Зарегистрирован: Сб 26 янв 2013 06:34

Копирование

Сообщение mdsf » Чт 12 янв 2017 05:46

Есть два абсолютно разных сервера + клиент, который периодически уезжает на объекты и выпадает из "интернет-зоны":
схема
схема
scheme.png (19.48 КБ) 5703 просмотра
Время от времени один из серверов недоступен. После возвращения в строй проходит синхронизация СУБД (автоматика + оператор с соответствующим инструментом), но не в этом суть. Главное: сами СУБД разные, но база данных на обоих серверах как по структуре, так и по содержанию одинакова. Однако, возможности сделать "mysql + mysql" или "oracle + oracle" нет, только "mysql + oracle".

Задача: пользователь, находясь в населённом пункте, подключается то к server-a, то к server-b (смотря какой из серверов на момент подключения в онлайне), но ему требуется обеспечить локальную копию на его ноутбуке на время, пока пользователь не имеет физической возможности подключения ни к одному из серверов (уехал на неделю/месяц на объекты в тайгу или тундру). Для этого у него на ноутбуке есть локальная sqlite-база. Иными словами: нужно сделать так, чтобы перед очередным выпаданием из "интернет-зоны" пользователь мог подключиться к любому из удалённых серверов (mysql или oracle), и обновить из него локальную копию sqlite, чтобы база была доступа офлайн. Надеюсь, доступно объясняю :oops:


Не подскажете, как лучше всего сделать такое?

mdsf
Сообщения: 36
Зарегистрирован: Сб 26 янв 2013 06:34

Re: Копирование

Сообщение mdsf » Чт 12 янв 2017 06:34

Стрктура БД предельно проста:

database
|---table
|---table
|---table
|---table
|---table
|---table
|---table
|---table


Связей и ХП нет, доступ к серверу исключительно read-only (записью занимается отдельный оператор на другом конце страны).

mdsf
Сообщения: 36
Зарегистрирован: Сб 26 янв 2013 06:34

Re: Копирование

Сообщение mdsf » Чт 12 янв 2017 08:38

Прямо сейчас всё работает так: пользователь запускает на ноутбуке приложение и подключается к одному из серверов (к первому, который ответит на запрос), грид в приложении визуализирует данные, и всё - пользователь оставляет приложение открытым, отправляет ноутбук в сон и прыгает в вагон/самолёт/авто. Так он с этой "спящей красавицей" и мотается по недоступным интернету объектам: приезжает на объект - открывает крышку ноутбука - работает с приложением - после работы закрывает крышку - едет на следующий. И так он работает чуть больше года, и работал бы и дальше, но это ненормально, по-моему. Поэтому я хотел бы немножко расширить функционал - просто копировать полученные данные в локальный sqlite, всё равно же они уже получены с mysql/oracle сервера.

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Копирование

Сообщение MaximG » Пт 13 янв 2017 10:51

Для решения описываемой задачи Вы можете использовать компонент TCRBatchMove, который позволяет переносить данные между различными датасетами. Более подробную информацию о нем Вы сможете получить в нашей документации:

https://www.devart.com/unidac/docs/?dev ... chmove.htm

Закрыто