- Artigo publicado na PVLDB Vol 15 sobre o futuro do SQLite
- O SQLite foi projetado para OLTP, mas recentemente, por causa de edge computing e data science, a demanda por OLAP vem aumentando
- O DuckDB, que apresenta forte desempenho em OLAP, é chamado de "SQLite for Analytics"
- Resume a comparação de desempenho entre SQLite e DuckDB e, com base nisso, o que foi feito para melhorar o processamento de dados analíticos, tornando-o 4.2x mais rápido no SSB
- Conteúdo do benchmark
- Em transações de escrita, o SQLite é de 10x a 500x mais rápido que o DuckDB
- No benchmark analítico (Star Schema Benchmark, SSB), o DuckDB é de 30x a 50x mais rápido que o SQLite
- Haverá melhorias contínuas, mas como os objetivos originais são diferentes, é difícil alcançar o mesmo desempenho
- Por meio de uma abordagem separada, o SQLite3/HE alcançou desempenho 100x maior no SSB sem degradação do desempenho de OLTP
- Por meio dessas tentativas, serão melhorados o desempenho do engine e adicionadas otimizações
2 comentários
Este artigo tem vários pontos interessantes, mas fiquei curioso sobre como exatamente foi feita a melhoria que aprimorou o processamento de OLAP e, com isso, os benchmarks relacionados, então fui ler rapidamente o texto original.
Em resumo, a melhoria consistiu na introdução de um filtro de Bloom para melhorar o processamento de
joinem consultas usadas para análise de dados.Ao fazer o profiling das consultas usadas no benchmark de OLAP do SQLite, descobriram que ele estava percorrendo a estrutura de dados B-tree até mesmo em partes que nunca apareciam no resultado final. Por isso, a principal mudança foi adicionar um filtro de Bloom, uma estrutura de dados probabilística capaz de afirmar com certeza quando um determinado elemento não existe, para filtrar antecipadamente e processar essas partes que não entrariam no resultado final.
Alguns textos de introdução a filtros de Bloom para quem quiser se aprofundar.
E parece que, hoje em dia, também existe algo chamado Xor Filter.
Notas sobre o artigo SQLite DuckDB
DuckDB - banco de dados OLAP embarcado open source