2009-06-23 13 views
19

Tengo un conjunto de datos razonablemente grande y me gustaría almacenarlo en un archivo en lugar de un RDBMS.SQLite para grandes conjuntos de datos?

La tabla principal en el conjunto de datos es un poco más de 1M filas, 30 columnas y aproximadamente 600Mb de tamaño como CSV.

Estoy considerando SQLite. ¿Vale la pena investigar SQLite para los conjuntos de datos de este tamaño?

Respuesta

16

SQLite manejará ese archivo muy bien; asegúrese de importar los registros en una transacción para que no pierda mucho tiempo creando índices hasta que todo se haya importado.

+0

Gracias por el consejo extra Paul. –

8

Investigué SQLite recientemente para una aplicación similar. La documentación SQLite establece que las bases de datos SQLite pueden tener un tamaño de terabytes y que la principal limitación de SQLite es la concurrencia (muchos usuarios al mismo tiempo). Aunque no fuimos en esta dirección (tenemos nuestro propio formato de almacenamiento binario), estaba bastante seguro de que SQLite podría manejar archivos de este tamaño.

2

sqlite debería funcionar bien para usted. He ejecutado un conjunto de datos de ese tamaño incluso en un dispositivo integrado y el rendimiento de sqlite era bastante razonable.

Como se mencionó, el principal cuello de botella es la concurrencia. Intente diseñar su sistema para que haya, como máximo, un identificador de base de datos abierto por archivo de base de datos.

5

sqlite es rápido cuando utiliza transacciones y no se compromete con demasiada frecuencia. El uso de declaraciones preparadas con parámetros acelera las cosas también. Sqlite no tiene que volver a analizar cada instrucción SQL cuando utiliza consultas parametrizadas. Un ejemplo: How do I get around the "'" problem in sqlite and c#?

Guardo 2 gigabytes en un sqlite db, funciona muy bien. Una gran ventaja de sqlite sobre un archivo plano es la posibilidad de indexar sus datos.

3

Ya tiene su respuesta, pero me gustaría compartir mi experimento actual: he eliminado miles de millones de registros con un valor de 793 GiB de datos en una única base de datos SQLite y las consultas leídas son sorprendentemente rápidas (menos de 1m).

El tiempo de creación tomó poco más de 22 horas y la creación posterior al índice toma alrededor de 4 horas por columna.

+0

Impresionante ... Si alcanzo el 10% de eso será mucho. Vendido. – ppumkin

Cuestiones relacionadas