Datenbank-Abfrage-Engines: Push vs. Pull

2025-04-16

Dieser Artikel untersucht die Unterschiede zwischen Push-basierten und Pull-basierten Datenbank-Abfrage-Engines. Pull-basierte Systeme, ähnlich dem Iterator-Modell, sind verbrauchergesteuert, wobei Daten bei Bedarf abgerufen werden. Push-basierte Systeme hingegen sind produzentengesteuert und schieben Daten aktiv an nachgelagerte Operatoren. Push-basierte Systeme eignen sich hervorragend für die Verarbeitung von Abfrageplänen in DAG-Form (z. B. die WITH-Klausel in SQL), da sie Daten effizient an mehrere nachgelagerte Operatoren pushen können, wodurch redundante Berechnungen und unnötige Pufferung vermieden werden. Pull-basierte Systeme bieten jedoch Vorteile bei der Behandlung bestimmter Algorithmen (wie Merge-Joins und LIMIT-Klauseln). Der Artikel untersucht außerdem die Cache-Effizienz, die Code-Einfachheit und die Eignung der einzelnen Modelle in verschiedenen Szenarien und kommt zu dem Schluss, dass keines der beiden Modelle universell überlegen ist, wobei die Wahl von den spezifischen Anforderungen abhängt.

Mehr lesen