Есть два абсолютно разных сервера + клиент, который периодически уезжает на объекты и выпадает из "интернет-зоны":
Время от времени один из серверов недоступен. После возвращения в строй проходит синхронизация СУБД (автоматика + оператор с соответствующим инструментом), но не в этом суть. Главное: сами СУБД разные, но база данных на обоих серверах как по структуре, так и по содержанию одинакова. Однако, возможности сделать "mysql + mysql" или "oracle + oracle" нет, только "mysql + oracle".
Задача: пользователь, находясь в населённом пункте, подключается то к server-a, то к server-b (смотря какой из серверов на момент подключения в онлайне), но ему требуется обеспечить локальную копию на его ноутбуке на время, пока пользователь не имеет физической возможности подключения ни к одному из серверов (уехал на неделю/месяц на объекты в тайгу или тундру). Для этого у него на ноутбуке есть локальная sqlite-база. Иными словами: нужно сделать так, чтобы перед очередным выпаданием из "интернет-зоны" пользователь мог подключиться к любому из удалённых серверов (mysql или oracle), и обновить из него локальную копию sqlite, чтобы база была доступа офлайн. Надеюсь, доступно объясняю
Не подскажете, как лучше всего сделать такое?
Копирование
Re: Копирование
Стрктура БД предельно проста:
database
|---table
|---table
|---table
|---table
|---table
|---table
|---table
|---table
Связей и ХП нет, доступ к серверу исключительно read-only (записью занимается отдельный оператор на другом конце страны).
database
|---table
|---table
|---table
|---table
|---table
|---table
|---table
|---table
Связей и ХП нет, доступ к серверу исключительно read-only (записью занимается отдельный оператор на другом конце страны).
Re: Копирование
Прямо сейчас всё работает так: пользователь запускает на ноутбуке приложение и подключается к одному из серверов (к первому, который ответит на запрос), грид в приложении визуализирует данные, и всё - пользователь оставляет приложение открытым, отправляет ноутбук в сон и прыгает в вагон/самолёт/авто. Так он с этой "спящей красавицей" и мотается по недоступным интернету объектам: приезжает на объект - открывает крышку ноутбука - работает с приложением - после работы закрывает крышку - едет на следующий. И так он работает чуть больше года, и работал бы и дальше, но это ненормально, по-моему. Поэтому я хотел бы немножко расширить функционал - просто копировать полученные данные в локальный sqlite, всё равно же они уже получены с mysql/oracle сервера.
Re: Копирование
Для решения описываемой задачи Вы можете использовать компонент TCRBatchMove, который позволяет переносить данные между различными датасетами. Более подробную информацию о нем Вы сможете получить в нашей документации:
https://www.devart.com/unidac/docs/?dev ... chmove.htm
https://www.devart.com/unidac/docs/?dev ... chmove.htm