useful-notes/scratches/query-engine-narrow.dot

148 lines
4.9 KiB
Plaintext
Raw Normal View History

digraph GeologQueryEngineNarrow {
fontname = "Helvetica,Arial,sans-serif"
layout = dot
rankdir = LR
ranksep = 0.9;
nodesep = 0.7;
splines = true;
compound = true;
bgcolor = "white"
node [
fontname = "Helvetica,Arial,sans-serif",
shape = box,
style = "filled,rounded",
color = "#555555",
fillcolor = "white",
penwidth = 1.5
]
edge [
fontname = "Helvetica,Arial,sans-serif",
color = "#333333",
fontsize = 9,
fontcolor = "#555555",
labeldistance = 2.0,
penwidth = 1.2
]
subgraph cluster_frontend {
label = "Geolog Front End"
style = "rounded"
color = "#666666"
fontcolor = "#333333"
bgcolor = "#FAFAFA"
margin = 20
subgraph cluster_language {
label = "Language Pipeline"
style = "dashed"
color = "#9C27B0"
fontcolor = "#7B1FA2"
margin = 14
concrete [label = "Concrete Syntax", fillcolor = "#F3E5F5", color = "#9C27B0"]
parser [label = "Parser", fillcolor = "#F3E5F5", color = "#9C27B0"]
abstract [label = "Abstract Syntax", fillcolor = "#F3E5F5", color = "#9C27B0"]
elaborator [label = "Elaborator", fillcolor = "#F3E5F5", color = "#9C27B0"]
typed [label = "Elaborated Syntax\n(with types)", fillcolor = "#F3E5F5", color = "#9C27B0"]
lowering [label = "Lowering", fillcolor = "#F3E5F5", color = "#9C27B0"]
ir [label = "Intermediate Representation\n(backend-neutral contract)", fillcolor = "#F3E5F5", color = "#9C27B0"]
}
subgraph cluster_tools {
label = "Developer Tooling"
style = "dashed"
color = "#4CAF50"
fontcolor = "#388E3C"
margin = 14
lsp [label = "LSP\n(parsing + elaboration diagnostics)", fillcolor = "#E8F5E9", color = "#4CAF50"]
}
}
subgraph cluster_execution {
label = "Execution Layer"
style = "dashed"
color = "#4CAF50"
fontcolor = "#388E3C"
margin = 18
query_translation [label = "IR to Backend Translation", fillcolor = "#E8F5E9", color = "#4CAF50"]
}
subgraph cluster_backends {
label = "Backend Implementations"
style = "rounded"
color = "#666666"
fontcolor = "#333333"
bgcolor = "#FAFAFA"
margin = 20
subgraph cluster_inmemory {
label = "In-Memory Backend"
style = "dashed"
color = "#FF9800"
fontcolor = "#F57C00"
margin = 14
inmem_rel [label = "Relation Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
inmem_laws [label = "Law / Chase Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
inmem_qe [label = "In-Memory Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"]
inmem_db [label = "In-Memory DB", fillcolor = "#ECEFF1", color = "#607D8B"]
}
subgraph cluster_postgres {
label = "Postgres Backend"
style = "dashed"
color = "#FF9800"
fontcolor = "#F57C00"
margin = 14
pg_schema [label = "IR to Schema", fillcolor = "#FFF3E0", color = "#FF9800"]
pg_queries [label = "IR to SQL Queries", fillcolor = "#FFF3E0", color = "#FF9800"]
pg_qe [label = "Postgres Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"]
pg_db [label = "Postgres DB", fillcolor = "#ECEFF1", color = "#607D8B"]
}
subgraph cluster_rust {
label = "Rust Backend"
style = "dashed"
color = "#FF9800"
fontcolor = "#F57C00"
margin = 14
ffi [label = "FFI Haskell to Rust\n(IR marshalling)", fillcolor = "#FFF3E0", color = "#FF9800"]
rust_rel [label = "Relation Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
rust_laws [label = "Law / Chase Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
rust_qe [label = "Rust Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"]
rust_store [label = "Rust Storage / Query Layer", fillcolor = "#ECEFF1", color = "#607D8B"]
}
}
concrete -> parser [color = "#9C27B0"]
parser -> abstract [color = "#9C27B0"]
abstract -> elaborator [color = "#9C27B0"]
elaborator -> typed [color = "#9C27B0"]
typed -> lowering [color = "#9C27B0"]
lowering -> ir [color = "#9C27B0"]
parser -> lsp [style = "dashed", color = "#4CAF50", label = "syntax info"]
elaborator -> lsp [style = "dashed", color = "#4CAF50", label = "type info"]
ir -> query_translation [color = "#4CAF50", label = "compile IR"]
query_translation -> inmem_rel [color = "#FF9800"]
query_translation -> inmem_laws [color = "#FF9800"]
query_translation -> pg_schema [color = "#FF9800"]
query_translation -> pg_queries [color = "#FF9800"]
query_translation -> ffi [color = "#FF9800"]
inmem_rel -> inmem_qe [color = "#FF9800"]
inmem_laws -> inmem_qe [color = "#FF9800"]
inmem_qe -> inmem_db [color = "#607D8B"]
pg_schema -> pg_db [color = "#607D8B"]
pg_queries -> pg_qe [color = "#FF9800"]
pg_qe -> pg_db [color = "#607D8B"]
ffi -> rust_rel [color = "#FF9800"]
ffi -> rust_laws [color = "#FF9800"]
rust_rel -> rust_qe [color = "#FF9800"]
rust_laws -> rust_qe [color = "#FF9800"]
rust_qe -> rust_store [color = "#607D8B"]
}