Плюсы и минусы SQLite и общих настроек

Каков хороший механизм для хранения информации между базой данных SQLite и общими настройками?

Зачем использовать общие настройки? Зачем использовать sqlite? Я пытался найти разницу между ними, и какой механизм хранения данных лучше, но я не могу найти подходящий ответ в Google. Пожалуйста, помогите мне с примером и объяснениями.

5 ответов

Решение

Это действительно зависит от данных, которые вы хотите сохранить.

SQLite

Большие объемы таких же структурированных данных должны храниться в базе данных SQLite, поскольку базы данных предназначены для данных такого типа. Поскольку данные структурированы и управляются базой данных, их можно запрашивать для получения подмножества данных, соответствующих определенным критериям, с использованием языка запросов, такого как SQL. Это позволяет искать в данных. Конечно, управление и поиск больших наборов данных влияет на производительность, поэтому чтение данных из базы данных может быть медленнее, чем чтение данных из SharedPreferences.

SharedPreferences

SharedPreferences - это хранилище ключей / значений, в котором вы можете сохранить данные под определенным ключом. Чтобы прочитать данные из магазина, вы должны знать ключ данных. Это делает чтение данных очень простым. Но хранить небольшой объем данных так же просто, как и сложно хранить и читать большие структурированные данные, так как вам необходимо определить ключ для каждой отдельной информации, более того, вы не можете реально искать в данных, если у вас нет определенной концепции для называя ключи.

На этот вопрос есть принятый ответ, но я думаю, что есть еще что сказать по теме - относительно скорости.

SharedPreferences и Sqlite DB приложения - это просто файлы, хранящиеся в каталогах приложения в файловой системе устройства. Если объем данных не слишком велик, опция Sqlite будет включать в себя более крупный и сложный файл с дополнительными издержками обработки для простого доступа.

Итак, если характер данных не диктует ваш выбор (как объяснено в принятом ответе) и скорость имеет значение, то вам, вероятно, лучше использовать SharedPreferences.

И чтение некоторых данных часто находится на критическом пути к отображению основной активности, поэтому я думаю, что скорость часто очень важна.

Последнее соображение относительно скорости и эффективности - если вам нужно использовать базу данных Sqlite для некоторых структурированных данных, то, вероятно, более эффективно также сохранять пользовательские настройки в базе данных, чтобы не открывать второй файл. Это довольно незначительное соображение - возможно, стоит рассмотреть его, только если вам нужно получить доступ как к структурированным данным, так и к предпочтениям, прежде чем вы сможете отобразить основное действие.

Я считаю, что речь идет не о скорости или размере, а о типах операций, которые вы хотите выполнить с вашими данными.

Если вы планируете выполнять объединение, сортировкуи другие операции с БД над вашими данными, перейдите к Sqlite. Примером является сортировка данных по дате.

Если вы хотите отобразить простые значения (например, int, boolean, String), используйте Preferences. Операции с БД здесь не будут работать и, разумеется, вам нужны все ключи. Примером является пароль пользователя или конфигурация приложения.

Большой соблазн для использования Preferences - это когда вы хотите использовать его для хранения сплющенного POJO (сериализованного объекта JSON) в виде String. Наличие такой необходимости на самом деле является признаком использования Sqlite. Зачем? Потому что сложные данные в конечном итоге потребуют сложных операций. Представьте себе получение определенной записи, которая может быть обработана простым "SELECT ... WHERE id = 1". В пути Preferences это будет долгий процесс от десериализации до итерации результатов.

  • Для хранения огромного количества данных используйте систему баз данных SQLite. Это позволит пользователю также искать данные.

  • С другой стороны, для хранения небольшого объема данных перейдите к разделу "Общие настройки". В этом случае огромная система баз данных не нужна. Это позволит пользователю просто сохранять данные и загружать их.

Забудьте SQLLite, забудьте SharedPreferences, используйте Realm. Единое решение для всего вашего локального хранилища. Вы можете использовать простые старые объекты Java в качестве объектов RealmObject и хранить там свои данные. Вы можете конвертировать выбранные запросы в файлы JSON. Не нужно разбирать всю базу данных. Проверьте эту ссылку: https://realm.io/news/introducing-realm/

Другие вопросы по тегам