Преимущества и недостатки SQLite и общие настройки

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

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

Ответ 1

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

SQLite

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

SharedPreferences

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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