I spent the last couple of months building relop, an in-memory relational operator engine in Rust to demystify the "black box" of query processing.
I found that while there are many great resources on "how to use a database," there aren't many that explain "how to build a query engine" from scratch without heavy dependencies. This 7-part series documents that journey, covering:
• Handwritten Lexers and Parsers
• Solving Precedence with a Recursive Descent Parser
• Building a Logical Plan
• Rule-based Optimization (Predicate & Limit Pushdown)
• The Volcano Execution Model
I spent the last couple of months building relop, an in-memory relational operator engine in Rust to demystify the "black box" of query processing.
I found that while there are many great resources on "how to use a database," there aren't many that explain "how to build a query engine" from scratch without heavy dependencies. This 7-part series documents that journey, covering:
• Handwritten Lexers and Parsers • Solving Precedence with a Recursive Descent Parser • Building a Logical Plan • Rule-based Optimization (Predicate & Limit Pushdown) • The Volcano Execution Model
Full Series: https://tech-lessons.in/en/blog/inside_a_query_engine_introd...
The code is here: https://github.com/SarthakMakhija/relop
I’d love to hear your thoughts or answer any questions about the implementation!