Android-хранилище данных – File vs SQLite

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

Каков наилучший вариант для хранения данных с точки зрения экономии времени автономной работы ? Каждое представление данных представляет собой сериализованный объект (класс имеет 5 полей, включая дату, цифры и строки) около 5K-10K.

Любая другая идея?

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

Я бы сказал, что вариант SQLite проще. Вы можете поместить столбец даты в таблицу SQLite, которая хранит ваши данные, что делает удаление старых представлений, которые вам не нужны более просто – и все они обрабатываются через собственную SQL-библиотеку. Управление полной загрузкой файла – или, что еще хуже, с одним файлом – с вашим собственным кодом Java – будет гораздо более эффективной.

Кроме того, вы можете записать данные в базу данных и просто забыть об этом, пока вам не понадобится прочитать его снова. Если вы храните данные в файлах, вам нужно будет работать, когда вы должны читать и записывать файлы в терминах жизненного цикла приложения Android . Если вас беспокоит батарея, вы, вероятно, не захотите записывать файлы чаще, чем следует, и кэшировать данные в памяти, но вам нужно будет убедиться, что вы не потеряли никаких данных, когда ваше приложение приостановлено или уничтожено , По-моему, гораздо проще использовать базу данных SQLite и не беспокоиться об этом.

Я не считаю, что важно, используете ли вы SQLite или файл, потому что SQLite db – это просто файл в системе (хранится в /data/data/<your_package>/databases/ ). Вам нужно будет зафиксировать db в нужное время, так же, как вам нужно будет сохранить файл на жесткий диск в нужное время. Другими словами, так или иначе вы можете использовать столько же записей на жестком диске.

Я думаю, что то, что вы выбираете, в большей степени зависит от того, какие данные вы сохраняете. Если вам нужны полномочия, которые может предоставить db (например, запрос), тогда, во всяком случае, используйте SQLite. Однако, если вам не нужен db, или у вас есть данные, которые сильно варьируются (и не могут быть легко настроены в реляционной базе данных), я бы пошел с файлами.

То, что я могу вам точно сказать, заключается в том, что вы не должны использовать сериализацию для сохранения файла, если это маршрут, который вы выбрали. Сериализация Android медленная, медленная, медленная и создает большие файлы. Гораздо лучше написать свой собственный формат XML или JSON по соображениям производительности.

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