Является ли использование общих настроек Android для хранения больших объемов данных хорошей идеей?

Так что я унаследовал этот Android-проект от кого-то другого. В настоящее время код, похоже, хранит огромные объемы данных (которые действительно должны принадлежать базе данных SQLite) в общих настройках. Мне очень не нравится эта часть кода, и я хочу начать использовать базу данных sqlite. Но я все еще не могу оправдать для себя время, которое потребуется, особенно если это не принесет немедленных выгод.

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

Будем очень признательны за любые мысли и комментарии по поводу хранения больших объемов данных в общих настройках.

Спасибо


person chhabrakadabra    schedule 13.06.2011    source источник


Ответы (2)


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

Дальнейшие исследования показали, что эта запись предполагает, что у вас не будет любые серьезные проблемы с большим объемом данных в ваших общих настройках. Однако у вас могут возникнуть проблемы с производительностью, поскольку для получения любого pref необходимо будет прочитать один XML-файл Shared Pref, в то время как с базой данных вам нужно будет брать только то, что вам нужно, по мере необходимости.

person Haphazard    schedule 13.06.2011
comment
Большое Вам спасибо. Я знаю, что на этот вопрос на самом деле нет одного ответа, потому что я спрашиваю мнения. Но ваш ответ решает мою дилемму, поэтому я просто отмечу это как правильный ответ. - person chhabrakadabra; 13.06.2011

TL;ДР; Не используйте общие префы для большого хранилища, вместо этого используйте БД (но если это работает сейчас, и вы спешите, сделайте это позже)

Я бы лично не рекомендовал это, так как система будет хранить в памяти копию всех общих настроек для вашего приложения. Поэтому, если вы добавите туда много данных, это повлияет на использование вашей памяти. Тем не менее, и в зависимости от формата данных (можете ли вы использовать его как есть и использовать ключ, чтобы найти его напрямую - если вы просто храните огромный объект JSON, который вам затем нужно проанализировать, или если вам нужно получить все общие префы для затем выполните линейный поиск того, который вам действительно нужен, в любом случае от этого мало пользы) и как часто вам придется обращаться к нему, поиск может быть быстрее, чем поиск файла или базы данных, поскольку он уже находится в памяти. Это также обеспечивает преимущество потокобезопасности (база данных SQL также подойдет, поскольку базы данных блокируются при доступе), в отличие от файла, с которым вам придется иметь дело самостоятельно.

Надеюсь это поможет.

person Francois Dermu    schedule 07.03.2018