Должны ли клиенты иметь прямой доступ к базе данных?

Следует ли программировать клиентские приложения таким образом, чтобы они подключались к удаленной базе данных SQL и извлекали данные из нее?

Основываясь на своих знаниях, я бы сказал, что это очень плохая практика, и у вас должно быть серверное приложение, которое обрабатывает всех клиентов и действует как центральный блок для извлечения данных - это правильно?

Создавались ли когда-либо системы бизнес-информации без серверного приложения для обслуживания клиентов?


person Sam    schedule 25.06.2013    source источник


Ответы (1)


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

Внешнее клиентское приложение, пожалуй, другой вопрос. Если вы распространяете, скажем, приложение для iPhone, я бы определенно написал сервер API для переноса общих запросов.

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

person Chet    schedule 27.06.2013
comment
в этом есть смысл! Если у вас есть несколько свободных минут, не могли бы вы посоветовать мне следующую систему: - person Sam; 28.06.2013
comment
Я создаю информационную систему для малого бизнеса (максимум 10 клиентов), однако безопасность имеет первостепенное значение. Было бы безопасно иметь центральный сервер с базой данных и просто создавать клиентов, чтобы они напрямую извлекали информацию (при условии, что обе стороны аутентифицированы в каком-то поместье, может быть, SSH?)? текущая система, которую они имеют, фактически запускает клиентские приложения на сервере через удаленный рабочий стол, по-видимому, без абстракции, должен ли я подумать об этом? - person Sam; 28.06.2013
comment
К вашему сведению, я студент и создаю эту систему для благотворительности бесплатно (преимущество для меня в опыте), просто мне нужно некоторое руководство XD - person Sam; 28.06.2013
comment
Мой опыт работы с подобным сценарием заключается в том, что клиенты не должны иметь возможности отправлять команды SQL непосредственно на сервер. Это связано с тем, что клиентские программисты часто ленивы и имеют привычку отправлять слишком сложные операторы SQL, потому что это уменьшает объем кода, который им нужно написать для клиента. Сервер является ограниченным ресурсом, но редко рассматривается как таковой. В большинстве случаев любой может спросить у сервера все, что захочет. Конечным результатом является то, что сервер становится перегруженным и не может предоставить то, что от него ожидается. - person Olof Forshell; 19.04.2014