
Concurrent SQL auf Remote-DuckDB-Servern via Quack-Protokoll
Das Quack-Protokoll wurde vor einigen Monaten vom DuckDB-Team veröffentlicht und ermöglicht die HTTP-basierte Kommunikation zwischen DuckDB-Instanzen auf verschiedenen Servern – also etwa das Lesen und Schreiben von Daten auf einem Remote-Server, als wären sie lokal. Thomas Reid hat daraufhin das GitHub-Projekt „cluster-duck" entwickelt, um zu untersuchen, ob parallele SQL-Abfragen auf mehreren Servern gleichzeitig abgefeuert und ihre Ergebnisse zentral koordiniert werden können – was konzeptionell über das einfache tabellenübergreifende Joinen via ATTACH hinausgeht. Der Testaufbau besteht aus drei AWS-EC2-Instanzen (Amazon Linux 2023, ARM64), die per CloudFormation-Stack provisioniert werden: Zwei reine Worker-Knoten und ein dritter, der zusätzlich als Koordinator fungiert. Jeder Knoten betreibt DuckDB 1.5.5 sowie den Quack-Server-Prozess als systemd-Service auf Port 9494; die Authentifizierung läuft über einen verschlüsselten AWS SSM Parameter Store. Die Koordination übernimmt Python-Code auf Worker 1: Jede SQL-Anweisung wird als QueryFragment verpackt, einem Thread zugewiesen und über eine threading.Barrier synchronisiert, sodass alle Threads möglichst gleichzeitig starten. Jeder Thread baut eine eigene lokale DuckDB-Verbindung auf, lädt die Quack-Extension und schickt die Abfrage via ATTACH und remote.query() an den jeweiligen Ziel-Server. Der Artikel betont explizit, dass cluster-duck kein verteiltes Query-Framework ist, sondern koordinierte, parallele Einzelabfragen auf unabhängigen DuckDB-Instanzen ermöglicht – eine leichtgewichtige Alternative für Datenpipelines ohn
- Infrastruktur: 3 AWS-EC2-Server (ARM64, Amazon Linux 2023) mit je 512 MB Swap, Python 3.12 und DuckDB 1.5.5 – Deploy via CloudFormation in Region us-east-2.
- Quack hört standardmäßig auf Port 9494; der Auth-Token wird aus einem verschlüsselten AWS SSM Parameter Store geladen.
- Synchronisierung via threading.Barrier: Alle Threads warten, bis jeder bereit ist, dann starten sie gemeinsam – die Ausgabe enthält einen gemessenen Start-Spread in Millisekunden.
- Jeder Thread nutzt eine eigene lokale DuckDB-Verbindung, die die Quack-Extension lädt und den Remote-Worker per ATTACH einbindet.
- Der gesamte Python-Quellcode ist als Base64-kodiertes Archiv direkt im CloudFormation-Template eingebettet – kein separater Code-Download beim Bootstrap nötig.
Frag die KI zum Artikel
Folgefragen zu Headline, Quelle und Volltext — Antwort streamt in wenigen Sekunden.
Verwandte Beiträge

Concurrent SQL auf Remote-DuckDB-Servern via Quack-Protokoll
Das Quack-Protokoll wurde vor einigen Monaten vom DuckDB-Team veröffentlicht und ermöglicht die HTTP-basierte Kommunikation zwischen DuckDB-Instanzen auf verschiedenen Servern – also etwa das Lesen und Schreiben von Daten auf einem Remote-Server, als wären sie lokal. Thomas Reid hat daraufhin das GitHub-Projekt „cluster-duck" entwickelt, um zu untersuchen, ob parallele SQL-Abfragen auf mehreren Servern gleichzeitig abgefeuert und ihre Ergebnisse zentral koordiniert werden können – was konzeptionell über das einfache tabellenübergreifende Joinen via ATTACH hinausgeht. Der Testaufbau besteht aus drei AWS-EC2-Instanzen (Amazon Linux 2023, ARM64), die per CloudFormation-Stack provisioniert werden: Zwei reine Worker-Knoten und ein dritter, der zusätzlich als Koordinator fungiert. Jeder Knoten betreibt DuckDB 1.5.5 sowie den Quack-Server-Prozess als systemd-Service auf Port 9494; die Authentifizierung läuft über einen verschlüsselten AWS SSM Parameter Store. Die Koordination übernimmt Python-Code auf Worker 1: Jede SQL-Anweisung wird als QueryFragment verpackt, einem Thread zugewiesen und über eine threading.Barrier synchronisiert, sodass alle Threads möglichst gleichzeitig starten. Jeder Thread baut eine eigene lokale DuckDB-Verbindung auf, lädt die Quack-Extension und schickt die Abfrage via ATTACH und remote.query() an den jeweiligen Ziel-Server. Der Artikel betont explizit, dass cluster-duck kein verteiltes Query-Framework ist, sondern koordinierte, parallele Einzelabfragen auf unabhängigen DuckDB-Instanzen ermöglicht – eine leichtgewichtige Alternative für Datenpipelines ohn
- Infrastruktur: 3 AWS-EC2-Server (ARM64, Amazon Linux 2023) mit je 512 MB Swap, Python 3.12 und DuckDB 1.5.5 – Deploy via CloudFormation in Region us-east-2.
- Quack hört standardmäßig auf Port 9494; der Auth-Token wird aus einem verschlüsselten AWS SSM Parameter Store geladen.
- Synchronisierung via threading.Barrier: Alle Threads warten, bis jeder bereit ist, dann starten sie gemeinsam – die Ausgabe enthält einen gemessenen Start-Spread in Millisekunden.
- Jeder Thread nutzt eine eigene lokale DuckDB-Verbindung, die die Quack-Extension lädt und den Remote-Worker per ATTACH einbindet.
- Der gesamte Python-Quellcode ist als Base64-kodiertes Archiv direkt im CloudFormation-Template eingebettet – kein separater Code-Download beim Bootstrap nötig.
Frag die KI zum Artikel
Folgefragen zu Headline, Quelle und Volltext — Antwort streamt in wenigen Sekunden.