DuckDB on xNVMe
| Paper | DuckDB on xNVMe (Preprint-PDF) |
| Implementierung | Fork |
| Veröffentlicht | arXiv, 2025 |
Zusammenfassung
DuckDB ist auf Portabilität ausgelegt. Es soll überall laufen und gegebenenfalls in Kontexten spezialisiert werden, in denen Leistung zählt, etwa als Cloud-Dienst oder auf einem Smart Device. In diesem Paper betrachten wir, wie DuckDB mit lokalem Speicher interagiert. Unsere langfristige Forschungsfrage lautet, ob und wie SSDs gemeinsam mit DuckDB entworfen werden könnten. Als ersten Schritt zur vertikalen Integration von DuckDB und programmierbaren SSDs untersuchen wir, ob und wie DuckDB direkt auf NVMe-SSDs zugreifen kann. Standardmäßig stützt sich DuckDB auf die POSIX-Dateischnittstelle. Stattdessen nutzen wir die xNVMe-Bibliothek und untersuchen, wie sie in DuckDB eingesetzt werden kann. Wir nutzen die blockbasierte Natur des DuckDB-Buffer-Managers, um die synchrone POSIX-I/O-Schnittstelle, das Dateisystem und den Blockmanager zu umgehen. Stattdessen senden wir asynchrone I/Os direkt gegen den logischen Blockadressraum der SSD. Unsere vorläufige experimentelle Studie vergleicht verschiedene Wege, asynchrone I/Os über xNVMe zu verwalten. Die Beschleunigung gegenüber der DuckDB-Baseline ist signifikant, selbst für die einfachste Scan-Abfrage über eine TPC-H-Tabelle. Erwartungsgemäß nimmt der Speed-up mit dem Scale Factor zu, und der Linux-NVMe-Passthru verbessert die Leistung. Zukünftige Arbeit umfasst eine gründlichere experimentelle Studie, eine flexible Lösung, die direkten NVMe-Zugriff und die klassische POSIX-Dateischnittstelle kombiniert, sowie das Co-Design von DuckDB und SSDs.