Как обрабатывать большой набор данных на мобильном устройстве - PullRequest
3 голосов
/ 26 марта 2011

У меня вопрос с содержанием: я пишу приложение, в котором отображается код города. Это много данных (~ 8 МБ текста). Я получил это в файле базы данных sqlite3. Я не могу разместить данные в Интернете, чтобы приложение могло их получить. Мне нужно отправить его с приложением.

Читая, как отправить этого монстра, я нашел 3 подхода:

  1. поставляет txt-файл со всеми командами для создания таблиц, вставки данных и создания индексов, а затем обходит файл и запускает каждую команду во время onCreate.
  2. отправьте файл .db в ресурсы (или я должен использовать raw) и скопируйте файл в / data / data / ...
  3. отправьте коллекцию файлов (txt, не db) и откройте их, когда мне нужно показать данные
    Ни один из этих подходов, кажется, не очень хорошо работает. Я думаю, что 3 - лучший вариант, но я не уверен, и мне придется создавать все файлы и т. Д. Кроме того, файлы будут распакованы, и я не уверен, что это займет больше места, чем файл .db.

Вопросы:

  1. Каков хороший шаблон для работы в подобном сценарии?
  2. Насколько велика "разумность", когда речь идет о размере sqlite3 db в телефоне?
  3. Если я открою файл размером 8 МБ и оставлю его открытым, пока приложение работает, я боров?

Ответы [ 3 ]

1 голос
/ 26 марта 2011
  1. Вы также можете отправить упакованную версию вашей базы данных и затем распаковать ее на SD-карту.Некоторые приложения даже используют два приложения - одно для приложения и одно для данных.Таким образом, внутреннее пространство хранения не ограничено данными.«Приложение данных» просто извлекает данные на SD-карту и может быть удалено после завершения своей задачи.

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

  3. Не знаю

1 голос
/ 26 марта 2011

Из трех предложенных вариантов, я думаю, # 2 - ваш лучший выбор. Он ничем не отличается от # 1 в конечном результате и позволит значительно упростить развертывание. (Не нужно пытаться создать БД на лету.) Это также будет намного более производительным, чем вариант № 3, потому что индексы будут создаваться и управляться БД. Если вы пойдете на # 3 и попытаетесь соответствовать производительности # 2, вам все равно придется создавать свои собственные индексы, которые потребуют много сложного кодирования, и использование вашей памяти будет таким же большим, если не большим, чем опция # 2.

  1. Не уверен, что шаблоны имеют значение в этом случае. Все дело в управлении большим набором данных.
  2. Разумный - это относительный термин, когда речь идет о размере приложения. Если это действительно полезно для конечного пользователя, тогда разумным будет более крупное приложение.
  3. «Боров» также является относительным термином согласно рассуждению выше. Если это полезно, конечный пользователь смирится с «боровом».

Другой вариант - разместить базу данных позади веб-службы и просто отправить приложение, которое обращается к ней. Помимо того, что устройство будет занимать гораздо меньше памяти, оно также позволит значительно упростить обновление данных. Например. вам не придется загружать обновления при изменении данных.

Другая идея: Провели ли вы исследование, чтобы выяснить, доступен ли этот набор данных бесплатно через веб-службу государственного / государственного управления? Взгляните сюда .

0 голосов
/ 06 мая 2017

Привет, lappall может быть слишком поздно, но это поможет другим.Myself Realm - лучший вариант.

Realm

Realm - это мобильная база данных и замена SQLite.Хотя база данных ОО имеет некоторые отличия от других баз данных.Realm не использует SQLite как движок.Вместо этого он имеет собственное ядро ​​C ++ и стремится предоставить мобильную альтернативу SQLite.Realm хранит данные в универсальном табличном формате с помощью ядра C ++.Это то, что позволяет Realm разрешать доступ к данным на нескольких языках, а также ряд специальных запросов

Преимущества:

  • быстрее, чем SQLite(до 10 раз быстрее по сравнению с необработанным SQLite для обычных операций)
  • простое в использовании
  • преобразование объектов, обработанное для вас
  • удобно для создания и хранения данных на лету
...