- Paper sobre el futuro de SQLite publicado en PVLDB Vol 15
- SQLite fue diseñado para OLTP, pero recientemente ha aumentado la necesidad de OLAP debido al edge computing y la ciencia de datos
- DuckDB, que muestra un rendimiento fuerte en OLAP, es llamado "SQLite for Analytics"
- Se compara el rendimiento de SQLite y DuckDB, y a partir de eso se resume cómo mejoraron el procesamiento de datos analíticos para hacerlo 4.2x más rápido en SSB
- Contenido del benchmark
- En transacciones de escritura, SQLite es 10x-500x más rápido que DuckDB
- En benchmarks analíticos (Star Schema Benchmark, SSB), DuckDB es 30-50x más rápido que SQLite
- Se seguirá mejorando continuamente, pero como sus objetivos originales son distintos, es difícil lograr el mismo nivel de rendimiento
- Con un método aparte, SQLite3/HE logró un rendimiento de 100x en SSB sin degradar el rendimiento OLTP
- A través de estos intentos, se seguirá mejorando el rendimiento del motor y agregando optimizaciones
2 comentarios
Este artículo tiene varios puntos interesantes, pero me dio curiosidad cómo mejoraron en concreto el procesamiento OLAP para obtener mejores resultados en los benchmarks, así que leí un poco el texto original.
En conclusión, esa mejora consistió en introducir un filtro de Bloom para optimizar el procesamiento de
joinen consultas usadas para análisis de datos.Al perfilar las consultas usadas en los benchmarks OLAP de SQLite, descubrieron que se seguía recorriendo la estructura de datos B-tree incluso en partes que no terminaban apareciendo en el resultado final. Por eso, el punto principal de la mejora fue agregar un filtro de Bloom, una estructura de datos probabilística que permite saber con certeza cuándo un elemento no existe, para descartar y procesar por adelantado las partes que no se incluirían en el resultado final.
Algunos artículos introductorios sobre filtros de Bloom para este punto.
Y al parecer últimamente también apareció algo llamado Xor Filter.
Notas sobre el artículo de SQLite y DuckDB
DuckDB - base de datos OLAP embebida de código abierto