aboutsummaryrefslogtreecommitdiffstats
path: root/docs/iterator-pipeline.puml
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2025-12-01 18:34:31 -0300
committerGitHub <noreply@github.com>2025-12-01 18:34:31 -0300
commit8c8b32d59acc78c7c3e1e8ecae8492a1b728b482 (patch)
treeb218e550b2b09e4920af6e12db531bfd65f65929 /docs/iterator-pipeline.puml
parente03b7c75be589d12ddc97d074abd2e3a5c6b7cdf (diff)
downloadSakura-8c8b32d59acc78c7c3e1e8ecae8492a1b728b482.tar.gz
Sakura-8c8b32d59acc78c7c3e1e8ecae8492a1b728b482.zip
Diagrams (#18)
Diffstat (limited to 'docs/iterator-pipeline.puml')
-rw-r--r--docs/iterator-pipeline.puml45
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