Android: как лучше сделать базу данных в приложении?
Я только недавно начал изучать Андроид-разработку, поэтому вопросы могут показаться глупыми.
Разрабатываю Android приложение, и настало время для подключения БД. Требуется сделать регистрацию пользователей, и хранить другие множества данных (например, список компаний, который постоянно обновляется).
Всего у меня на уме было 3 варианта:
- Использовать SQLite (локальное хранилище) - не подходит (не буду же я хранить данные всех пользователей и компаний локально на устройстве каждого пользователя?
получается уже своего рода блокчейн) - Использовать Firebase, т.к. насколько я понял это одно из (лучших?) популярных решений - не подходит, т.к. оплата Firebase недоступна из России без танцев с бубном
- Использовать базу данных на удаленном сервере
Если я все правильно понял, из всех вариантов остается только третий - и тут возникают проблемы.
- Информации о том, как подключить к приложению БД достаточно мало.
- Нужно использовать веб сервисы, т.к. работать с базой прямо из приложения небезопасно (и еще много причин почему)
- Нужно писать все запросы вручную на голом SQL?
Подскажите, правильно ли я понимаю всю ситуацию? Может существует более простой путь для использования внешней БД на Android?
В тех же приложениях на Spring разработчику вообще не приходится думать об организации БД (до какого-то времени), т.к. фреймворк берет всю работу на себя.
Ответы (1 шт):
В большинстве случаев используется классическая трёхзвенная архитектура:
- БД. Одна, хранится на вашем сервере, доступ извне закрыт.
- Приложение сервер. Запущено на вашем сервере. Может быть один экземпляр или несколько, если нужно обслуживать много подключений. Предоставляет свой API в сеть. Принимает запросы (вызовы методов API) по сети, обрабатывает их внутри себя, обращается к БД, отдаёт клиенту ответ по той же сети.
- Приложение клиент. Запущено на устройстве клиента. Обрабатывает пользовательский ввод, вызывает API, принимает ответные данные и выводит их пользователю.
Некоторые данные, которые часто нужны клиенту и редко меняются можно сохранить у пользователя локально (SQLite). В API необходимо предусмотреть метод закачки этих данных клиенту. Желательно также предусмотреть возможность проверки актуальности этих данных и возможность получить только изменения, а не всё.