diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2025-12-01 18:34:31 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-01 18:34:31 -0300 |
| commit | 8c8b32d59acc78c7c3e1e8ecae8492a1b728b482 (patch) | |
| tree | b218e550b2b09e4920af6e12db531bfd65f65929 /docs/iterator-pipeline.puml | |
| parent | e03b7c75be589d12ddc97d074abd2e3a5c6b7cdf (diff) | |
| download | Sakura-8c8b32d59acc78c7c3e1e8ecae8492a1b728b482.tar.gz Sakura-8c8b32d59acc78c7c3e1e8ecae8492a1b728b482.zip | |
Diagrams (#18)
Diffstat (limited to '')
| -rw-r--r-- | docs/iterator-pipeline.puml | 45 |
1 files changed, 45 insertions, 0 deletions
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 |
