SQLite: Past, Present, and Future
(vldb.org)- PVLDB Vol 15에 게재된 SQLite의 미래에 대한 페이퍼
- SQLite는 OLTP를 위해 디자인 되었으나, 최근 엣지컴퓨팅 및 데이터사이언스 때문에 OLAP에 대한 니즈가 늘어남
- OLAP에 강한 성능을 보이는 DuckDB 는 "SQLite for Analytics"라 불림
- SQLite와 DuckDB의 성능을 비교하고, 이를 통해서 분석 데이터 처리를 개선하여 SSB에서 4.2x 빠르게 만든 내용을 정리
- 벤치마크 내용
- 쓰기 트랜잭션에서는 SQLite 가 DuckDB보다 10x-500x 빠름
- 분석 벤치마크(Star Schema Benchmark, SSB)에서는 DuckDB가 SQLite보다 30-50x 빠름
- 지속적으로 개선할 것이지만, 애초에 목적 자체가 다르므로 같은 성능을 구현하기는 어려움
- 별도의 방법으로 SQLite3/HE 에서는 OLTP 성능 저하없이 SSB에서 100x의 성능을 구현
- 이런 시도들을 통해서 엔진의 성능을 개선하고 최적화를 추가할 것
이 논문에는 여러 가지 내용이 있지만, OLAP 처리를 개선하여 관련 벤치마크를 개선했다는 부분을 구체적으로 어떻게 했는지 궁금하여 원문을 잠시 읽어봤습니다.
결론적으로 해당 개선 내용은 데이터 분석을 위해 사용되는 쿼리의 join 처리를 개선하기 위해 블룸 필터를 도입했다는 것이었습니다.
SQLite에서 OLAP 벤치마크에 사용한 쿼리를 프로파일링한 결과, 실제 최종 결과에 전혀 포함되지 않는 부분까지 B-tree 자료구조를 탐색하고 있었다는군요. 따라서 최종 결과에 포함되지 않을 부분을 미리 골라내고 처리하기 위해, 특정 요소가 존재하지 않는다는 것을 확실하게 알 수 있는 확률적 자료구조인 블룸 필터를 추가했다는 것이 해당 개선의 주요 내용이었습니다.
이쯤에서 보는 블룸 필터 소개글 몇 가지.
그리고 요즘은 Xor Filter라는 것도 나왔다고 합니다.