Работа клиента с сервером SQL

Модератор: Модераторы

Работа клиента с сервером SQL

Сообщение Sharfik » 10.06.2019 22:32:37

Добрый день, а кому то вечер.
Как корректно организовывать работу программы клиента для работы с SQL сервером?
Я имею ввиду порядок работы команд и времени соединения:
Подключение к SQL -> Взяли данные -> Изменили данные -> Сохранили данные -> Посмотрели ->Посмотрели -> Отключение от SQL Сервера.
Или же:
Подключение к SQL -> Взяли данные -> Отключение от SQL Сервера-> Посмотрели -> Подключение к SQL -> Изменили данные -> Сохранили данные -> Отключение от SQL Сервера.

Открыть, сохранить нет вопросов. А вот как обрабатывать потерю соединения в самый интересный момент и потом его восстанавливать для меня сейчас задачка. Не гонять же постоянно тестово соединение с сервером и тут же отключение.
Sharfik
постоялец
 
Сообщения: 488
Зарегистрирован: 20.07.2013 01:04:30

Re: Работа клиента с сервером SQL

Сообщение Снег Север » 11.06.2019 06:47:05

Многое зависит от того, какой это конкретно SQL сервер. Для разных серверов по-разному. И от надежности вашей сети. И от того, какой именно момент вы считаете "самым интересным"... :)
И что является клиентом - стационарная аппликация или вебсервис.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1970
Зарегистрирован: 27.11.2007 16:14:47

Re: Работа клиента с сервером SQL

Сообщение Sharfik » 11.06.2019 14:11:41

Клиент - просто программа на ПК пользователя. Сервер - MySQL в данном случает.
Пока вижу только способ перед каждым Edit, New, Delete воткнуть тестирование соединения попыткой подключения вторым соединением.


PS: С точки зрения безопасности, насколько я понимаю, на удаленном сервере вообще должна стоять своя программа которая разговаривает с приложением клиентом. Чтобы не оставлять пароли доступа к SQL серверу на машине пользователя.
Sharfik
постоялец
 
Сообщения: 488
Зарегистрирован: 20.07.2013 01:04:30

Re: Работа клиента с сервером SQL

Сообщение Снег Север » 11.06.2019 15:41:36

Sharfik, последнее - лучше всего, конечно. У нас так работает коммерческое приложение - на какой-то одной машине запускается приложение в режиме "мастера", непосредственно к базе. У клиентов подключение идет через него, по совсем другому порту и с юзерами/паролями уже только внутри приложения, не имеющими отношения к юзерам MySQL. У MySQL настроена проверка подключения по IP, только допустима машина "мастера". В другом варианте - набор допустимых IP заводится администратором, а клиент получет юзера/пароль MySQL скрытно, в шифрованном виде по TCP.
Потеря подключения отлавливается по ошибке выполнения любого из запросов в try...except и только при ошибке делается попытка реконнекта и повторной отправки запроса. Если снова ошибка - обращайтесь к администратору. Вот как-то так.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1970
Зарегистрирован: 27.11.2007 16:14:47

Re: Работа клиента с сервером SQL

Сообщение Sharfik » 11.06.2019 16:15:37

Снег Север Спасибо!
Sharfik
постоялец
 
Сообщения: 488
Зарегистрирован: 20.07.2013 01:04:30

Re: Работа клиента с сервером SQL

Сообщение olegy123 » 11.06.2019 18:15:45

Sharfik писал(а):А вот как обрабатывать потерю соединения в самый интересный момент и потом его восстанавливать для меня сейчас задачка. Не гонять же постоянно тестово соединение с сервером и тут же отключение.

Вы неправильно ставите вопрос.
Это детский вопрос и звучит оно так если помереть то как потом есть, пить или водить автомобиль. Что случится с Базой? Да ничего не случится..
Что случится с клентом при разрыве соединения - словит ошибку.
А если клиент в горах, где нет интернета и электричества. Как он будет работать с вашей MySQL базой? Надо его снабдить дизель генератором и спутниковой связью. Есть чем глубоко вам подумать.

Sharfik писал(а):Пока вижу только способ перед каждым Edit, New, Delete воткнуть тестирование соединения попыткой подключения вторым соединением.
ну тогда тестируйте каждый байт на наличие ошибок. Нет нужно проверять каждый бит. :lol:

Sharfik писал(а):С точки зрения безопасности, насколько я понимаю, на удаленном сервере вообще должна стоять своя программа которая разговаривает с приложением клиентом.

это уже продумали сетевики - смотрите в сторону TCP KeepAlive

Sharfik писал(а):Чтобы не оставлять пароли доступа к SQL серверу на машине пользователя.
Ого, если нужна полная безопасность то советую выдавать сессионный пароль(в рамках подключения), до многофазную подтверждения юзера, можно через SMS с подтверждением юзера.
Можно обойтись от прямого контакта с таблицами MySQL но тогда нужно городить трехзвенку или даже больше..

не думайте об качестве подключения - это забота сетевека. Или же нужно делать кэширование и сливать данные когда есть инет. Я так сейчас делаю с мобильниками клиентов в деревнях, где 2G ловится с трудом, а работать надо. Там забота самого клиента - чтобы найти место где он сольет данные. Тут "наука бессильна".
olegy123
энтузиаст
 
Сообщения: 1422
Зарегистрирован: 25.02.2016 12:10:20


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru