Android: как лучше сделать базу данных в приложении?

Рейтинг: 1Ответов: 1Опубликовано: 14.02.2023

Я только недавно начал изучать Андроид-разработку, поэтому вопросы могут показаться глупыми.

Разрабатываю Android приложение, и настало время для подключения БД. Требуется сделать регистрацию пользователей, и хранить другие множества данных (например, список компаний, который постоянно обновляется).

Всего у меня на уме было 3 варианта:

  1. Использовать SQLite (локальное хранилище) - не подходит (не буду же я хранить данные всех пользователей и компаний локально на устройстве каждого пользователя? получается уже своего рода блокчейн)
  2. Использовать Firebase, т.к. насколько я понял это одно из (лучших?) популярных решений - не подходит, т.к. оплата Firebase недоступна из России без танцев с бубном
  3. Использовать базу данных на удаленном сервере

Если я все правильно понял, из всех вариантов остается только третий - и тут возникают проблемы.

  1. Информации о том, как подключить к приложению БД достаточно мало.
  2. Нужно использовать веб сервисы, т.к. работать с базой прямо из приложения небезопасно (и еще много причин почему)
  3. Нужно писать все запросы вручную на голом SQL?

Подскажите, правильно ли я понимаю всю ситуацию? Может существует более простой путь для использования внешней БД на Android?

В тех же приложениях на Spring разработчику вообще не приходится думать об организации БД (до какого-то времени), т.к. фреймворк берет всю работу на себя.

Ответы

▲ 2

В большинстве случаев используется классическая трёхзвенная архитектура:

  1. БД. Одна, хранится на вашем сервере, доступ извне закрыт.
  2. Приложение сервер. Запущено на вашем сервере. Может быть один экземпляр или несколько, если нужно обслуживать много подключений. Предоставляет свой API в сеть. Принимает запросы (вызовы методов API) по сети, обрабатывает их внутри себя, обращается к БД, отдаёт клиенту ответ по той же сети.
  3. Приложение клиент. Запущено на устройстве клиента. Обрабатывает пользовательский ввод, вызывает API, принимает ответные данные и выводит их пользователю.

Некоторые данные, которые часто нужны клиенту и редко меняются можно сохранить у пользователя локально (SQLite). В API необходимо предусмотреть метод закачки этих данных клиенту. Желательно также предусмотреть возможность проверки актуальности этих данных и возможность получить только изменения, а не всё.