Hi everyone!
We are three Oil & Gas Engineering students from Institut Teknologi Sumatera (ITERA), Indonesia, and for our university capstone project we decided to do something slightly unusual:
build a database engine in Julia.
The project is called AiresDB.
It originally started because we wanted a database engine for our final Oil & Gas coursework, but the project gradually became much larger than we expected. We eventually decided to make it open source so other students, study programs, or anyone interested could use it, study it, modify it, and hopefully improve it with us.
AiresDB currently has:
- an Indonesian-inspired query language called AiresQL
- ACID transactions with WAL and recovery
- MVCC with serializable conflict detection
- 8 KiB page-based storage
- slotted pages and RIDs
- a persistent B+Tree
- a buffer pool
- a small query planner and relational executor
- an HTTP/JSON server
- support for Windows and Linux
We also built reproducible tests and benchmarks because we wanted to understand whether what we were building actually worked rather than just being able to run a few queries.
But we are still students, and honestly, building a database engine has been much harder than we expected.
There are areas such as storage concurrency, query optimization, indexing, recovery, and systems programming where people in this community almost certainly have much more experience than we do.
We have also used AI tools during development for learning, debugging, reviewing ideas, and exploring implementations. We do not want to pretend that we understand every design decision perfectly, which is one of the reasons we are sharing AiresDB here.
We would really appreciate technical criticism.
If something in the architecture looks wrong, unnecessarily complicated, unsafe, un-Julian, or could simply be designed better, please tell us.
We are also looking for contributors.
If database internals, Julia systems programming, storage engines, query optimizers, testing, documentation, or even breaking databases sounds interesting to you, we would be very happy to work with you.
AiresDB is currently released under the permissive University of Illinois/NCSA Open Source License.
This is still a technical preview, not something we would recommend for critical production data yet.
Thanks for taking a look. Criticism, questions, ideas, issues, and pull requests are all very welcome.