Volcano Model
ভলকানো মডেল
Query execution-র iterator architecture — প্রতিটা operator `next()` call-এ এক tuple টানে, উপরের তলা পর্যন্ত pull chain।
also: iterator-model, tuple-at-a-time
class Operator:
def __next__(self) -> Row: ... # একবারে এক row, শেষে StopIteration
rows = Limit(10, Sort(key, HashAggregate(HashJoin(...))))
- Composition সহজ — plan tree-ই operator tree; নতুন operator = নতুন class
- Tuple-by-tuple: virtual function call per row, cache locality খারাপ — interpreted overhead
- Materialization model: operator-এ পুরো result set; columnar vectorized: batch (১০০০ tuple) per next — OLAP-এ জয়
Python generator হুবহু volcano; Spark/Presto-র pipeline ভিন্ন কিন্তু operator composition idea একই।