Lykia is a toy multi-model database basically written for educational purposes.
- Written in Rust
- A weird scripting and query language, combination of JavaScript and SQL. Built based on the language "Lox" which is explained in the famous book, Crafting Interpreters.
- A subset of JSON data types in both scripting language itself and storage
- In-disk and in-memory storage
- ACID compliance
- Replication
- Core scripting language
- A minimal standard library
- Data manipulation language ("SELECT", "INSERT", "UPDATE", "DELETE")
- Event loop, client-server communication
- Data definition language ("CREATE COLLECTION", etc.) (in progress)
- Query binding and planning (in progress)
- LSM storage engine (based on mini-lsm) (in progress)
- MVCC for transaction management (based on mini-lsm)
- B-Tree implementation for indexing
- Plan optimization
- Basic replication with Raft
To use Lykia, you can download the latest release from the GitHub releases page.
Run the server:
$ cargo run --release --bin lykiadb-lykiadb-server
Run the client:
$ cargo run --release --bin lykiadb-shell lykiadb-shell/examples/fib.ly
Client transmits the fib.ly in an infinite loop.
Lykia is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.