2011-01-21 18 views
14

Actualmente estoy desarrollando una aplicación que tiene el potencial de crear una base de datos muy grande. Había planeado instalar la aplicación en la tarjeta SD para permitir espacio extra. Los tratos recientes aquí me han advertido que tal vez no sea una buena idea. ¿Hay algún paso que pueda tomar para mitigar el peligro de este curso de acción? ¿O hay mejores alternativas?Tratar con una gran base de datos en Android

Respuesta

11

Este es un comprehensive post sobre el tema (no soy el autor).

Creo que, en general, se debe comunicar que SQLite es solo un mecanismo SQL para acceder a un archivo. Parece que el límite actual del mercado es 50mb para todo el APK. Al instalar en la memoria interna, necesita 2 veces su tamaño de APK. Instalar en sdcard requiere solo el tamaño de APK indicado.

Esto es lo que va a trabajar en contra: 1. ) Desde SQLite es sólo una abstracción sobre el archivo, cuando haces selecciona, inserciones, actualizaciones, etc., se le incurriendo sdcard leer los costes de escritura 2.) He visto mencionar un soft limit of 10000 records basado en el rendimiento. Este artículo es un poco antiguo, por lo que es probable que mejore.

Aparte de eso, probablemente tendrá que configurar algunas pruebas para ver qué es factible. La búsqueda curricular de Google no mostró ningún punto de referencia hasta la fecha.

+0

Nice answer. +1. Tengo una duda de que si el archivo sqlite es externo en Android, ¿cuál será el límite? ¿Es lo mismo que el escritorio o todavía hay alguna limitación ...? – Vinay

4

Como se señaló anteriormente, SQLite tiene la funcionalidad que está buscando, empacada en una pequeña biblioteca. Está diseñado para reemplazar el acceso simple a archivos con acceso a datos transaccionales confiable y recuperable a través de una API SQL. Hay un gran resumen en su main page.

Hay literalmente miles de proyectos que utilizan SQLite. Si su conjunto de datos va a ser muy grande (más de 100-200MB), entonces puede considerar usar Berkeley DB como una opción. Berkeley DB recientemente presentó soporte para un SQL API, que es completamente compatible con SQLite. Además de la funcionalidad proporcionada por el analizador SQLite SQL, el planificador de consultas y el ejecutor, también obtiene la confiabilidad y escalabilidad que Berkeley DB es reconocida. Tenemos varios clientes que felizmente comenzaron con SQLite. Cuando se dieron cuenta de que necesitaban concurrencia adicional, escalabilidad y confiabilidad que no estaban disponibles en SQLite, reemplazaron la biblioteca SQLite con la biblioteca BDB, volvieron a compilar su aplicación y la probaron y ejecutaron en Berkeley en pocos días.

Soy uno de los administradores de productos de Berkeley DB, por lo que soy un poco parcial. :-) Sin embargo, implementamos la BDB SQL API para que pudiéramos ofrecer a los usuarios lo mejor de ambos mundos: la ubicuidad y la facilidad de uso de SQLite combinadas con la concurrencia, fiabilidad y escalabilidad de Berkeley DB. Especialmente con conjuntos de datos más grandes, Berkeley DB puede marcar la diferencia en el rendimiento de la aplicación.

+0

¿Berkeley DB está disponible en todos los teléfonos con Android? ¿Es tan fácil cambiar una aplicación de Android de SQLite a BDB? –

+1

Berkeley DB se puede descargar desde aquí: http://bit.ly/gNWr1C. Tanto BDB como BDB Java Edition se ejecutan en Android. Si desea usar la API de SQL, entonces debe descargar BDB (no BDB JE). Ambos productos están probados y son compatibles con Android y tenemos clientes que ejecutan aplicaciones basadas en BDB en Android. Necesitará construir Berkeley DB y apuntar su aplicación a la biblioteca de BDB. Debes tener cuidado con la biblioteca que estás utilizando, pero una vez que esté configurada, debería ejecutarse.Háganos saber si tiene alguna pregunta enviándolas al OTN Forum (http://bit.ly/g5Fkbz). – dsegleau

+0

Puede encontrar este enlace del Foro OTN útil: http://bit.ly/dZ86xg – dsegleau

2

Como se mencionó anteriormente, puede utilizar Berkeley DB (no la edición de Java) en Android. Describí los pasos del proceso de compilación cruzada here ya que requiere ajustes menores.

Cuestiones relacionadas