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

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

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

5 ответов


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

SQLite

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

SharedPreferences

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


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

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

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

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

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


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

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

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

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


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

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


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