Нужно ли отдельно писать сервер для взаимодействия с БД?
==========================================================

 Сразу извиняюсь за корявую формулировку вопроса, совсем зелёная ещё.  

  

У меня стоит задача написать приложение (не web), в котором клиенты могли бы обмениваться сообщениями и просматривать файлы которые выложил администратор (тоже клиент, но как особый тип пользователя). Также нужно чтобы каждый клиент имел свой профиль, который он может редактировать.  

  

Собственно главный вопрос: как организовать всё это дело с использованием базы данных?  

  

В интернете куча всяких примеров подключения к БД из клиентского приложения, но всё это *в пределах одного ПК и одного пользователя.*  

*Хотелось бы понять нужно ли мне писать свой сервер* для взаимодействия с БД, которая размещается на удалённом ПК или же можно просто напрямую с клиентского приложения подключатся к БД, только чтобы не было никаких конфликтов, когда одновременно несколько клиентов пытаются авторизоваться или изменить данные.  

  

Если второй вариант возможен, то могу ли я разместить базу данных на обычном домашнем ПК с учётом того, что может быть ~1000 клиентов, или же лучше размещать БД на какой-то платный хостинг?  

  

**Направьте в нужное русло пожалуйста, а то совсем запуталась. Спасибо.** 

 Хостинг: шаред или дешевый VPS, на котором вы разместите свою БД.  

Там же - API на чем угодно (PHP, JS, Python), с авторизацией и разрешением конфликтов (а скорее - устранением их причины).  

И все остальное, что вам нужно сделать из приложения, покроет libCurl. 

 Имеет место быть несколько подходов.   

  

1. Вынос через сервис (rest, grpc, soap и прочее) (плюсы уменьшение площади атаки до вашего сервиса)  

2. Вынос подключения к бд тоже имеет место быть, все нормально с использованием нормальной базы postgree , mysql, mssql, oracle, db2  

3. Просто вставка в ваше приложение веб вью 

 Если хочешь меньше делать своего и просто взять за основу какой-то проект то поищи на гитхабе проекты велосипедных месенджеров и расширь их функционал   

  

Только вот разобраться в чужом коде может быть сложней чем написать свое