Каков хороший механизм для хранения информации между базой данных SQLite и общими настройками?
Зачем использовать общие настройки? Зачем использовать sqlite? Я пытался найти разницу между ними, и какой механизм хранения данных лучше, но я не могу найти подходящий ответ в Google. Пожалуйста, помогите мне с примером и объяснениями.
Ответы:
Это действительно зависит от данных, которые вы хотите сохранить.
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 это будет долгий процесс от десериализации до итерации результатов.
источник
SharedPreferences
ключевых / значений одновременно (например , какuser
иpassword
клавиши), так что вы будете уверены , что либо обе кнопки убираются или оба установлены.Для хранения огромного количества данных используйте систему баз данных SQLite. Это позволит пользователю также искать данные.
С другой стороны, для хранения небольшого объема данных перейдите к разделу «Общие настройки». В этом случае огромная система баз данных не нужна. Это позволит пользователю просто сохранять данные и загружать их.
источник
Забудьте SQLLite, забудьте SharedPreferences, используйте Realm. Единое решение для всего вашего локального хранилища. Вы можете использовать простые старые объекты Java в качестве объектов RealmObject и хранить там свои данные. Вы можете конвертировать выбранные запросы в файлы JSON. Не нужно разбирать всю базу данных. Проверьте эту ссылку: https://realm.io/news/introduction-realm/
источник