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


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

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

5 128

5 ответов:

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

SQLite

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

SharedPreferences

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

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

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

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

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

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

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

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

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

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

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

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

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