2008-10-07 16 views
8

Tengo un archivo de base de datos que se genera en una PC con Sqlite. Este archivo luego se transfiere a un sistema integrado basado en ARM7 sin un sistema operativo. El sistema integrado debe acceder a esta base de datos, pero no necesita actualizarla.Sqlite en un sistema integrado

He intentado hacer que sqlite3 sea lo suficientemente pequeño para el sistema integrado, pero hasta ahora no puedo obtener el tamaño de la aplicación por debajo de 256 Kbytes (mi límite).

¿Alguien ha podido obtener sqlite3 hasta este tamaño? ¿Hay otro software que pueda usar para leer esta base de datos?

EDITAR: Estoy tratando de acceder a la base de datos usando C. Esto se haría usando la función sqlite3_exec().

Hay dos tablas. Una tabla tiene una ID y texto, la segunda una ID, un enlace a la ID de la primera tabla, texto y valor de estado. El único acceso requerido es por ID o texto parcial en la primera tabla, y por ID en la segunda tabla.

¿Tal vez hay algún código independiente que se puede utilizar para acceder a la base de datos?

+0

Simplemente para aclarar, ¿está tratando de obtener la aplicación de línea de comandos sqlite3 en el sistema integrado, o está utilizando la API C para acceder a su base de datos sqlite? –

Respuesta

3

El sqlite3 más pequeño que se me ocurrió fue 327 KBytes (para PowerPC), que fue suficiente para el sistema, así que dejé de tratar de hacerlo más pequeño. Este era el binario completo de la CLI sqlite3, las API C solo habrían sido algo más pequeñas.

Había establecido SQLITE_OMIT_AUTHORIZATION, SQLITE_OMIT_EXPLAIN, SQLITE_OMIT_PROGRESS_CALLBACK y SQLITE_OMIT_TCL_VARIABLE para recortar el tamaño del binario, y usé -Os para obtenerlo en ese tamaño.

0

¿Se puede exportar el archivo de la base de datos a un archivo XML o texto u otro archivo "plano"? Es mucho más fácil trabajar en un entorno integrado.

+0

Dado que hay dos tablas, dos archivos XML o CSV probablemente serían los mejores, si se utiliza este método. –

+0

Tenía la esperanza de usar el sqlite para acelerar mis búsquedas. – selwyn

0

Primero probaría con sqlite2, podría ser más delgado (o no). Si eso no ayuda, diría que vaya con su propia codificación binaria.

A menos que su archivo de datos sea realmente grande, lo que pierde con las excelentes optimizaciones de SQLite, ganará al no usar SQL.

Por supuesto, utilice estructuras de datos apropiadas (muy probablemente un árbol B * o similar).

0

Si no necesita toda la potencia de SQL, podría ser interesante buscar soluciones alternativas, como Berkeley DB.

+2

... pero tenga cuidado con los problemas de licencia, que es un problema que sqlite no tiene. –

1

Puede que quiera echar un vistazo a cdb, es ideal para datos 'constantes', el código es de código abierto y se compilará en pequeños ejecutables, incluso puede destriparlo para hacer que el exe sea más pequeño. Menos de 10k debería ser fácil. google cdb

Cuestiones relacionadas