Android. Собеседование #8. База данных. SQLite

Автор:

1. Что из себя представляет SQLite?

SQLite – реляционная СУБД написанная на языке C. Выступает в роли сервера, т.е. программы подключаются к файлу базы данных и взаимодействуют с ней.

На Android SQLite представляет из себя основной файл с расширением .db, а также вспомогательные файлы write ahead  logs (WAL) и shared memory files (SHM), которые находится в корневой директории приложения (data/data/package.name/databases) просмотреть которую возможно, только при наличии root прав на телефоне:

По умолчанию, доступ к базе данных возможен только из приложения, которое ее создало. Чтобы получить к ней доступ из других приложений, нужно использовать возможности ContentProvider и ContentResolver.

2. Для чего нужна версия базы данных?

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

3. В каком потоке необходимо обрабатывать запросы в базу данных?

Любые запросы к базе данных необходимо обрабатывать в отдельном потоке, чтобы главный UI поток приложения был разгружен и не возникало неприятной ANR ошибки и кашей приложения.
Для запросов можно использовать любые удобные средства – AsyncTask, ThreadPool, RxJava, Kotlin Coroutines.

4. Что лучше использовать для хранения данных SQLite или SharedPreferences?

SharedPreferences (SP) предназначен только для хранения данных в формате ключ-значение и при возрастании объема хранимой информации, запросы к SP начнут тормозить. SP используется в основном для хранения какого-либо небольшого кэша, например время сессии, настройки, прогресс. Соответственно для полноценного хранения информации и осуществления к ним гибких запросов, необходимо использовать СУБД SQLite.

5. Какие популярные ORM для Android вы знаете?

Realm – самый распространенный NOSQL фреймворк написанный на C++, исходя из статистики и самый быстрый. Из SQL фреймворков можно использовать Room, ORMLite, GreenDao. Room предоставляется библиотекой androidx и на текущий момент является самым популярным решением. Статистика производительности, время чтения и записи указаны в миллисекундах:

Крайне не рекомендуется использовать чистый SQL Helper, который поставляется с Android SDK, т.к. на его реализацию уходит достаточно много времени, по сравнению с ORM.

 

Ваш адрес email не будет опубликован. Обязательные поля помечены *