From 8c8b32d59acc78c7c3e1e8ecae8492a1b728b482 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Mon, 1 Dec 2025 18:34:31 -0300 Subject: Diagrams (#18) --- docs/iterator-pipeline.puml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docs/iterator-pipeline.puml (limited to 'docs/iterator-pipeline.puml') diff --git a/docs/iterator-pipeline.puml b/docs/iterator-pipeline.puml new file mode 100644 index 0000000..810ef63 --- /dev/null +++ b/docs/iterator-pipeline.puml @@ -0,0 +1,45 @@ +@startuml iterator-pipeline +!theme plain +title Volcano Iterator Model - Process Pipeline + +component "Scan Iterator\n(Process)" as P1 { + [Read from Relation] as S1 +} + +component "Select Iterator\n(Process)" as P2 { + [Apply Predicate] as S2 +} + +component "Project Iterator\n(Process)" as P3 { + [Filter Attributes] as S3 +} + +component "Sort Iterator\n(Process)" as P4 { + [Sort All Tuples] as S4 +} + +component "Take Iterator\n(Process)" as P5 { + [Limit N Tuples] as S5 +} + +P1 -right-> P2: {next, Pid}\n{tuple, T} | done +P2 -right-> P3: {next, Pid}\n{tuple, T} | done +P3 -right-> P4: {next, Pid}\n{tuple, T} | done +P4 -right-> P5: {next, Pid}\n{tuple, T} | done + +note bottom of P1 + Each iterator is an + independent Erlang process + + Message passing protocol: + - Request: {next, CallerPid} + - Response: {tuple, Data} | done + + Benefits: + - Lazy evaluation + - Memory-bounded + - Composable + - Concurrent +end note + +@enduml -- cgit v1.2.3