Действительно ли разумно подключить настольный клиент непосредственно к MySQL?

Я использую эту функцию:

gcaa() { git add --all && git commit -m "$*" }

В моем файле конфигурации zsh я могу просто сделать:

> gcaa This is the commit message

Для автоматической постановки и фиксации всех файлов.

6
задан Sam Wilson 25 June 2009 в 07:44
поделиться

6 ответов

Что ж, пока вы даете клиенту пользователя только с правильными разрешениями, я не вижу ничего неправильного с подключением напрямую к MySQL. Возможно, если у вас будет много-много работающих клиентов, которые будут поддерживать множество подключений к MySQL открытыми, в то время как веб-служба может использовать одно соединение и обрабатывать нагрузку от всех клиентов.

Истинная полезность веб-службы - это когда у вас много бизнес-логики, которой не может быть в базе данных. Встраивать эту логику в клиент - очень плохая идея, потому что пользователи могут запускать устаревшие версии и так далее. Кроме того, веб-служба позволяет иметь разные типы клиентов (например, клиент Windows, веб-клиент и т. Д.) Без необходимости переписывать какую-либо логику, кроме представления.

2
ответ дан 17 December 2019 в 04:51
поделиться

Несколько причин (в произвольном порядке):

  • Изменить бизнес-логику только в одном месте, изменения схемы базы данных не влияют на клиентов (только на сервис)
  • Система авторизации MySQL довольно грубый
  • Более безопасный, так как вам не нужно открывать вашу БД для внешнего мира
  • Веб-службы работают через стандартные порты HTTP, меньше проблем с межсетевыми экранами
  • Нет необходимости устанавливать драйверы ODBC

Конечно, веб-сервисы - не универсальная панацея. Некоторые из вышеперечисленных могут не применяться в вашем конкретном сценарии, используйте то, что лучше для вас.

3
ответ дан 17 December 2019 в 04:51
поделиться

Прямое подключение к базе данных влечет за собой, очевидно, наличие прямого доступа к вашей базе данных из Интернета. Это означает, что если вы не будете очень осторожны с настройкой разрешений, вы можете сделать всю свою базу данных уязвимой для атак. В то время как с веб-службой единственный доступ, который может иметь любой пользователь к базе данных, - это доступ / функциональность, доступная через веб-службу. Я хотел бы заявить, что надлежащая защита и поддержка базы данных MySQL, открытой в сети, - это больше хлопот, чем дополнительный код, используемый для создания уровня аутентификации веб-службы.

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

0
ответ дан 17 December 2019 в 04:51
поделиться

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

Итак, в основном, то, что позволяет вам делать веб-сервис, - это отнимать некоторую мощность у пользователь. Мощность, которая им в данном случае не нужна. Если, конечно, клиенты не запускают собственный сервер базы данных, но это ' совершенно другая среда. (если они хотят разрушить собственную БД, это их дело)

0
ответ дан 17 December 2019 в 04:51
поделиться

Веб-служба позволит вам кэшировать данные, уменьшая нагрузку на базу данных. Это также упростит предоставление данных из вашей системы другим системам. Another thing is flexability - with a web service as another layer, you can change the connection string/scheme changes for all clients in a single location, you won't have to redistribute the client.
Will you ever need any of these? I usually don't go for paradigms, as you say, but I think a web service can make sense. Still, only you know the design of your application: How many people will use this client? Does a connection to the MySQL server require any special software/configurations on the client computer? (Oracle does, for example).

0
ответ дан 17 December 2019 в 04:51
поделиться

Больше вопроса, чем ответ, каковы скорость последствий между 2 подходами? I.e. Прямое подключение к MySQL или использование веб-сервиса

0
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: