データベースクエリエンジン:プッシュ型対プル型

2025-04-16

この記事では、データベースのクエリエンジンにおけるプッシュ型とプル型の違いについて詳しく説明します。プル型システムは、イテレータモデルと同様に、コンシューマ主導型であり、データは必要に応じて取得されます。一方、プッシュ型システムはプロデューサ主導型であり、データをダウンストリームオペレータに積極的にプッシュします。プッシュ型システムは、DAG型のクエリプラン(例:SQLのWITH句)の処理に優れており、データを複数のダウンストリームオペレータに効率的にプッシュすることで、冗長な計算と不必要なバッファリングを回避します。しかし、プル型システムは、特定のアルゴリズム(マージ結合やLIMIT句など)の処理に利点があります。この記事では、キャッシュ効率、コードの簡潔さ、およびさまざまなシナリオにおける各モデルの適合性についても検討し、どちらのモデルも普遍的に優れているわけではなく、選択は具体的な要件によって決まるという結論に至ります。