Работа с большой базой данных в Android

В настоящее время я разрабатываю приложение, которое может создать очень большую базу данных. Я планировал установить приложение на SD-карту, чтобы позволить себе дополнительную комнату. Недавние сделки здесь предупредили меня, что это может быть не очень хорошая идея. Есть ли какие-то шаги, которые я могу предпринять для смягчения опасности этого курса? Или есть лучшие альтернативы?

Ответы

Ответ 1

Это всеобъемлющее сообщение по этому вопросу (я не автор).

Я думаю, в общем, нужно сообщить, что SQLite - это просто механизм SQL для доступа к файлу. Похоже, что текущий рыночный предел составляет 50 мб для всего APK. При установке во внутреннюю память требуется 2 раза ваш размер APK. Для установки на SD-карту требуется только указанный размер APK.

Вот что вы будете против: 1.) Так как SQLite - это просто абстракция над вашим файлом, когда вы выбираете, вставляете, обновляете и т.д., Вы будете нести расходы на чтение скриптов sdcard 2.) Я видел упоминание о мягком лимите 10000 записей на основе производительности. Эта статья немного устарела, поэтому ее вероятность стала лучше.

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

Ответ 2

Как уже указывалось ранее, SQLite имеет функциональность, которую вы ищете, упакованную в маленькую библиотеку. Он предназначен для замены простого доступа к файлам с надежным, восстанавливаемым доступом к транзакционным данным через SQL API. Там большое резюме на главной странице.

Существует буквально тысячи проектов, использующих SQLite. Если ваш набор данных будет очень большим (более 100-200 МБ), тогда вам может потребоваться использовать Berkeley DB в качестве опции. Недавно Berkeley DB представила поддержку SQL API, которая полностью совместима с SQLite. Помимо функциональности, предоставляемой анализатором SQLite SQL, планировщиком запросов и исполнителем, вы также получаете надежность и масштабируемость, которые хорошо известны Berkeley DB. У нас есть несколько клиентов, которые с радостью начали работать с SQLite. Когда они поняли, что им нужны дополнительные concurrency, масштабируемость и надежность, недоступные в SQLite, они заменили библиотеку SQLite библиотекой BDB, перекомпилировали приложение и протестировали его в Беркли в течение нескольких дней.

Я один из менеджеров продуктов для Berkeley DB, поэтому я немного предвзятый.:-) Однако мы внедрили BDB SQL API, чтобы мы могли предложить пользователям лучшее из обоих миров: вездесущность и простоту использования SQLite в сочетании с concurrency, надежность и масштабируемость Berkeley DB. Особенно с большими наборами данных Berkeley DB может существенно повлиять на производительность приложений.

Ответ 3

Как упоминалось выше, вы можете использовать Berkeley DB (а не Java Edition) на Android. Я описал шаги процесса кросс-компиляции здесь, так как он требует незначительной настройки.