15 Punkte von xguru 2022-09-05 | 2 Kommentare | Auf WhatsApp teilen
  • Ein in PVLDB Vol 15 veröffentlichter Artikel über die Zukunft von SQLite
  • SQLite wurde für OLTP entwickelt, aber in letzter Zeit ist durch Edge Computing und Data Science der Bedarf an OLAP gestiegen
  • DuckDB, das eine starke Leistung bei OLAP zeigt, wird als "SQLite for Analytics" bezeichnet
  • Es werden die Leistungsdaten von SQLite und DuckDB verglichen und zusammengefasst, wie die Verarbeitung analytischer Daten dadurch verbessert wurde, sodass sie im SSB 4,2x schneller wurde
  • Benchmark-Ergebnisse
    • Bei Schreibtransaktionen ist SQLite 10x-500x schneller als DuckDB
    • Im Analyse-Benchmark (Star Schema Benchmark, SSB) ist DuckDB 30-50x schneller als SQLite
  • Es wird kontinuierlich weiter verbessert, aber da die ursprünglichen Ziele unterschiedlich sind, ist es schwierig, die gleiche Leistung zu erreichen
  • Mit einer separaten Methode wurde in SQLite3/HE im SSB eine 100x-Leistung erzielt, ohne die OLTP-Leistung zu verschlechtern
  • Durch solche Versuche sollen die Engine-Leistung verbessert und weitere Optimierungen hinzugefügt werden

2 Kommentare

 
kunggom 2022-09-06

Dieses Paper enthält viele interessante Punkte, aber ich war besonders neugierig, wie genau die Verbesserungen bei der OLAP-Verarbeitung umgesetzt wurden, die auch die entsprechenden Benchmarks verbessert haben, und habe deshalb kurz den Originaltext gelesen.

Im Ergebnis bestand die betreffende Verbesserung darin, Bloom-Filter einzuführen, um die Join-Verarbeitung von Abfragen zu verbessern, die für die Datenanalyse verwendet werden.

Bei der Profilierung der für den OLAP-Benchmark verwendeten Abfragen in SQLite zeigte sich, dass sogar Bereiche der B-Tree-Datenstruktur durchsucht wurden, die im tatsächlichen Endergebnis überhaupt nicht enthalten waren. Der Kern der Verbesserung bestand daher darin, einen Bloom-Filter hinzuzufügen — eine probabilistische Datenstruktur, mit der sich sicher feststellen lässt, dass ein bestimmtes Element nicht vorhanden ist —, um Teile, die nicht im Endergebnis enthalten sein werden, vorab auszusortieren und so effizienter zu verarbeiten.

Hier noch ein paar einführende Artikel zu Bloom-Filtern.

Und in letzter Zeit ist offenbar auch so etwas wie ein Xor Filter aufgekommen.