Russian Qt Forum
Апрель 07, 2020, 19:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Синхронизация Базы данных Локальной и Интернет сервера MySQL  (Прочитано 1316 раз)
vvaaavv
Новичок

Offline Offline

Сообщений: 11


Просмотр профиля
« Ответ #15 : Март 04, 2020, 16:41 »

Правильно ли я понял, что есть две независимые БД, с которыми работают две группы пользователей. Одну вы называете локальной (интересно, почему - к ней имеется доступ только по локальной по сети?)
Есть программа, которая работает с БД, на этом же компьютере. (Не понимаю как ещё правильней-то: имеется в виду один комп вообще, без участия сети в целом, но с доступом в интернет)
Другая расположена на каком-то сервере, с доступом по сети интернет.
Да, расположена на каком-то сервере. Должна быть, такая же, точная копия:)
Обе БД выполняют одинаковую задачу, но две группы пользователей принципиально работают только со своими БД.
И стоит задача синхронизации данных в обоих БД с учетом того, что взаимодействие этих БД через интернет может отсутствовать.
Так?
Как же на пальцах объяснить-то... попробую. Например есть точка "А" (Пункт приёма оборудования в ремонт, где производится приёмка, выдаётся бумажка клиенту, и это надо делать очень быстро, в любом случае и без участие интернета, если он пропал неожиданно), есть точка "Р" (Пункт ремонта этого оборудования, где тоже предстоит работать с данной программой)
Они находятся в разных местах. На разных улицах Улыбающийся
Интернет есть он постоянный, но бывает что не работает час в день, например. Если интернета нет, программа в любом случае должна работать, как на "А", так и на "Р".
В данный момент вся работа программы и БД происходит на точке "А". Необходимо разгрузить точку "А" от лишней работы.
Это так на пальцах. Всё бы ничего. Просто Точек Приёма есть ещё "Б", и "С". А ещё оператор, который принимает звонки от клиентов, со всех точек, звонит в "Р" или в "А", "Б", "С" чтобы узнать состояние оборудования, и перезванивает клиенту, что не совсем удобно. её тоже можно обозначить точкой "О".
И вот в этих условиях происходит бардак и постоянные непонятки. Все три точки работают со своими БД.
Необходимо объединить все базы в одну (Да хоть с нуля, лишь бы работали в дальнейшем) и чтобы все точки работали с ней.

Вот такая задача! Пожелайте мне успехов!!! Улыбающийся
« Последнее редактирование: Март 04, 2020, 18:19 от vvaaavv » Записан
vvaaavv
Новичок

Offline Offline

Сообщений: 11


Просмотр профиля
« Ответ #16 : Март 04, 2020, 16:44 »

Так что же у вас в интернете: MySQL или MS SQL? Это вообще говоря две СОВСЕМ РАЗНЫЕ СУБД. И с технической, и с лицензионно-юридической точек зрения.
MySQL, не MS SQL, я знаю что они разные. MS SQL тоже можно обзавестись, за доп. плату.
В том посту моём единственная опечатка. Прошу считать как MySQL.
« Последнее редактирование: Март 04, 2020, 18:37 от vvaaavv » Записан
vvaaavv
Новичок

Offline Offline

Сообщений: 11


Просмотр профиля
« Ответ #17 : Март 04, 2020, 18:16 »

Я бы, честно говоря, смигрировал сначала с Access на MySQL даже для локальной БД
Я рассматривал данный вариант. Я конечно могу круто ошибаться: Мне не понравилось что нужно отдельно устанавливать MySQL на комп и настраивать его. Давным давно я с этим делом провозился достаточное количество времени. Необходимо просто поставить программу и что бы она работала. На MySQL возможно будет добиться такой реализации? я имею в виду на компьютер поставить так, что бы запустил и она установилась и моя программа работала с ней. (Я понимаю, что возможно всё, только сколько это займёт время) И как это сделать, если есть ссылки, дайте пожалуйста, почитаю. (Имел в виду правильную установку MySQL на комп и чтобы без заморочек работать в моей программе Qt C++, смигрировать не проблема, проблема будет потом, когда начнут меня дёргать каждый раз после переустановки виндовс, например)
Записан
sergek
Хакер
*****
Offline Offline

Сообщений: 656


Мы должны приносить пользу людям!


Просмотр профиля
« Ответ #18 : Март 04, 2020, 19:33 »

Необходимо объединить все базы в одну (Да хоть с нуля, лишь бы работали в дальнейшем) и чтобы все точки работали с ней.
Вот такая задача! Пожелайте мне успехов!!! Улыбающийся
Да, критиковать легко)) К тому же, как выясняется, дело все чудесатее - баз не 2, а много, и все они они должны синхронизироваться. Фактически, это совсем другая постановка задачи.
Что ж, успехов!
« Последнее редактирование: Март 04, 2020, 19:41 от sergek » Записан

Qt 5.13.0 Qt Creator 4.11.1
Win10, Ubuntu 18.04
DarkHobbit
Чайник
*
Offline Offline

Сообщений: 99


Просмотр профиля
« Ответ #19 : Март 04, 2020, 20:34 »

Мне не понравилось что нужно отдельно устанавливать MySQL на комп и настраивать его. Давным давно я с этим делом провозился достаточное количество времени. Необходимо просто поставить программу и что бы она работала. На MySQL возможно будет добиться такой реализации? я имею в виду на компьютер поставить так, что бы запустил и она установилась и моя программа работала с ней.

Таки да, вы правы - локальная БД в плане настройки сама по себе проще, чем сервер. Кстати, помимо Access, ещё SQLite, которая вообще ничего не потребует, кроме DLL и Qtшного драйвера.

Но если на одну чашу весов положить телодвижения по настройке MySQL (которые хорошо известны и описаны), а на другую - телодвижения по настройке репликации РАЗНЫХ СУБД (которую ещё надо свелосипедить), я бы лучше сделал первые. А самое обидное, что к настройке репликации тоже, скорее всего придётся возвращаться "после переустановки виндовс".

Я бы перевёл всё на MySQL и написал бы простенькую инструкцию по действиям в случае переустановки. Совсем без обслуживания БД всё равно нельзя оставлять - как минимум, бэкапы делать нужно...
Записан

Мои проекты на Qt: DoubleContact, LInvert
DarkHobbit
Чайник
*
Offline Offline

Сообщений: 99


Просмотр профиля
« Ответ #20 : Март 10, 2020, 08:55 »

Вдогонку: даже в случае БД на Access она всё равно совсем без настройки не обойдётся. Надо, чтобы в системе был настроен источник ODBC, надо, чтобы был MS Office с Access и, скорее всего, не какой попало версии (знаю случай, когда админы на объекте, не подумав, накатили новый офис, после чего отвалились программы, завязанные на его COM-объекты)... Если всё равно инструкцию по обслуживанию системы писать, лучше уж унифицировать базы и инструкцию писать именно на этот случай.
Записан

Мои проекты на Qt: DoubleContact, LInvert
sergek
Хакер
*****
Offline Offline

Сообщений: 656


Мы должны приносить пользу людям!


Просмотр профиля
« Ответ #21 : Март 10, 2020, 09:44 »

Почему-то никто не вспомнил про PostgreSQL)) Там вообще ничего настраивать не нужно. В Linux ставится одним нажатием sudo upt-get install.., в Windows уже не помню, но раза 3-4 подтвердить настройки по умолчанию. Работать с ней- одно удовольствие.
Записан

Qt 5.13.0 Qt Creator 4.11.1
Win10, Ubuntu 18.04
vbv
Чайник
*
Offline Offline

Сообщений: 56


Просмотр профиля
« Ответ #22 : Март 10, 2020, 10:28 »

Почему-то никто не вспомнил про PostgreSQL)) Там вообще ничего настраивать не нужно. В Linux ставится одним нажатием sudo upt-get install.., в Windows уже не помню, но раза 3-4 подтвердить настройки по умолчанию. Работать с ней- одно удовольствие.

Видимо по причине отсутствия этой СУБД  в вопросе.
Записан
vvaaavv
Новичок

Offline Offline

Сообщений: 11


Просмотр профиля
« Ответ #23 : Март 10, 2020, 11:09 »

Надо, чтобы в системе был настроен источник ODBC, надо, чтобы был MS Office с Access и, скорее всего, не какой попало версии
Я тоже так думал, пока не начал тестировать программу в разных Windows. Программа + файл БД (mdb, для старых БД Access 2000) Работает на ура, на моё удивление 7,8,10 и без разницы какой офис, Самое интересное, что Access вообще может быть не установлен. Сам был в шоке. Думал что Access придётся определённый ставить, а нет.
(знаю случай, когда админы на объекте, не подумав, накатили новый офис, после чего отвалились программы, завязанные на его COM-объекты)
Вот поэтому я решил больше никогда не писать в самом Access, по моей практике, всё что было придумано в Access 2002 уже не компилилось в 2007. Да и скорость выполнения в сотни раз медленнее. (Если брать расчёт в целом, не с Базами Данных)
Если всё равно инструкцию по обслуживанию системы писать, лучше уж унифицировать базы и инструкцию писать именно на этот случай.
Это уж понятно. Куда без этого.
Почему-то никто не вспомнил про PostgreSQL)) Там вообще ничего настраивать не нужно. В Linux ставится одним нажатием sudo upt-get install.., в Windows уже не помню, но раза 3-4 подтвердить настройки по умолчанию. Работать с ней- одно удовольствие.
Надо рассмотреть данный вариант, да и в интернете на сервере можно такую БД создать.
Записан
vvaaavv
Новичок

Offline Offline

Сообщений: 11


Просмотр профиля
« Ответ #24 : Март 10, 2020, 14:36 »

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

Вроде всё сделал. Создал всякие вспомогательные функции и т.д.
Как сделал:
В общем создал новую таблицу Query_Table в которую засунул Id (Счётчик), DateTime (Дата время), Primary (логический), Query (Большой текст), User (логический).
В неё записываются все запросы (только не Select)
В локальной БД создаются 2 строки в этой таблицы (один к самой локальной БД, другой к инет БД), где если запрос был выполнен User помечается на true
Создал функцию по таймеру (20 сек. пока поставил), которая собирает все невыполненные запросы из этой таблицы, и выполняет, если соединение установлено, затем отмечаются они как выполненные.
Для обратной репликации:
В инет БД создал такую же таблицу, только столбцов с User может быть больше (если два пользователя - то добавляется User_2)
Там тоже, при удачном выполнение запроса - User = 1, если этот запрос поступил от него и был выполнен, а для User_2 = 0 (По умолчанию)
В той же самой функции по таймеру, собирает все невыполненные запросы из инет БД и выполняет их, в случае успеха помечает нужного User как True.

Только сегодня пару часов назад, начал тестировать. Вычисляю всевозможные отклонения, исключения и т.д
Работы ещё много в этом направление. Подводные камни в любом случае появятся.!
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 22.