XNGIN (pronounced "X Engine")
This is a personal project to build a SQL engine from scratch.
The project name is inspired by Nginx, which is a very popular web server with high performance and ease to use.
Goal
- Fast.
- Easy to use.
- Distributed.
Non-Goal
Transactional management.
Development Plan
There are lots of things to do. Just list some as below.
Functionality | Status |
---|---|
Frontend AST Definition | Done |
Frontend AST Parse | Done |
Frontend AST Format | Done |
Logical IR Definition | In progress |
Logical IR Rewrite | Todo |
Catalog Definition | Demo |
Catalog Maintain | Todo |
Statistics Definition | Todo |
Statistics Maintain | Todo |
Optimizer Framework | Todo |
Cost Model | Todo |
Optimizer implementation | Todo |
Plan Cache | Todo |
Physical Plan Definition | Todo |
Execution Framework | Todo |
In-Memory Data Format | Todo |
Physical Operators | Todo |
Client Protocol | Todo |
Internal Network Protocol | Todo |
Index Framework | Todo |
Index Implementation | Todo |
Backend Storage | Todo |
Backend Operators | Todo |
Backend Adaptor | Todo |
Data Exporter and Importer | Todo |
Current focus is on SQL interface and optimizer framework.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.