2015-08-11 5 views
0

Я прочитал через Android Storage Options и у меня есть вопрос, который я не смог найти ответ на:Android Persistent Storage

Должен ли я использовать SQLite для хранения своих данных, или я должен использовать объект JSON который записывается в файл?

Требования: магазин (до) несколько сотен экземпляров одного и того же объекта. Каждый экземпляр будет несколько сложным, сохраняя ссылку на изображения, объекты меньшего размера и т. Д. Данные будут храниться локально, с возможностью резервного копирования облака. Все данные будут загружены при запуске и сохранены при манипулировании пользователем.

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

Кроме того, экспорт моих данных в файл JSON позволит мне легко импортировать/экспортировать с разных платформ устройств (я уже делаю это на iOS).

Или, может быть, есть лучший вариант? Если бы была библиотека типа NSCoding для Android, я бы, вероятно, использовал ее.

Любые мнения полезны.

Спасибо!

+1

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

+0

Думаю, мне больше интересно, является ли JSON действующим постоянным форматом хранения? Или если я столкнулся с проблемами производительности, если мне нужно сохранить массив с несколькими значениями 1000. – cohenadair

+0

любой сэр, вы sqlite, кто-знает-базу данных и т. Д., Просто убедитесь, что вы можете эффективно использовать его и т. Д., А для производительности есть много мест, в которые вы можете попасть не только на хранение и извлечение данных, так что свободный мир сэр. – Elltz

ответ

2

Из представленного до сих пор сохранение в файлах будет более выгодным.

Учитывая, что каждый «блок» имеет менее 16 атрибутов, json-файл с короткими идентификаторами, скорее всего, сгенерирует более крупное представление файла, чем эквивалент представления SQL. Однако локальная обработка файлов позволит упростить взаимодействие, а также упростить резервное копирование вверх/вниз. Кроме того, класс File достаточно прост, чтобы создавать меньше проблем по сравнению с SQL. Наконец, учитывая выбор, вам нужно будет оценить используемые операции.

Если вы собираетесь сравнивать данные, тогда SQL, скорее всего, будет работать быстрее, но если вы просто вводите/выводите каждый файл в виде отдельного объекта, то файлы будут такими же быстрыми, как SQL.

Наконец, пожалуйста, выделите свои объекты, не создавайте всего 1 файл со всей информацией.

+0

Спасибо за ввод. Мне интересно, есть ли простой способ экспортировать базу данных SQL в JSON? Или, точнее, экспортировать объект Java в JSON? Если это так, в конечном итоге может быть полезно использовать базу данных. – cohenadair

+0

@cohenadair Я не знаю хорошей программы, которая выводит базу данных json, так как их правила разные. То, что я обычно делаю, имеет «toJsonFile (** некоторое правило **)», в основном, я бы читал некоторые данные с сервера и входил в файлы (например, output0.json ... output999.json), это хорошо, когда я у меня слишком много данных, я могу использовать плохие компьютерные компьютеры для продолжения передачи данных партиями (также, телефонными устройствами и т. д.) ... – Bonatti

+0

Спасибо; Я думаю, что я собираюсь попробовать этот маршрут, так как это облегчит импорт/экспорт из/на другие платформы. Кроме того, я уже экспортирую данные iOS в файл JSON для резервного копирования. – cohenadair

0

Я прочитал через Android Параметры хранения и у меня есть вопрос , что я не был в состоянии найти ответ на:

Должен ли я использовать SQLite для хранения своих данных, или я должен использовать Объект JSON , который записывается в файл?

Необходимо снова проанализировать ваше требование.

Возможно, есть лучший вариант?

Это зависит от вашего требования. Если ваше требование исправлено для простого хранения и извлечения, вы можете посмотреть на tinnyDB, который в основном использует SharedPreferences в качестве механизма хранения. Но если вам нужен выбор/запрос данных на основе базы данных, тогда вы должны пойти с SQLite.

+0

Я добавил требования к вопросу. Мне не нужно будет использовать какие-либо запросы; это вопрос загрузки всех данных при запуске и сохранения данных при их манипулировании. – cohenadair