A distributed SQL database, written as a learning project about my journey on the database and rust.
sboxdb
represents Sandbox DB
.
- KV Storage:
- in memory based key-value storage
- add LSM based kv storage for OLTP
- add parquet based storage for OLAP
[x] buffer pool manager with lru-k replacer
- Replication: Raft-based replicated state machine
- no cluster membership config change support.
- Transactional Storage: transactional mvcc storage
- concurrency control with MVCC+OCC
- add Write-Ahead-Log support
- add ARIES recovery support
- Transactional access method:
- catalog related access methods
- tuple related CRUD access methods
- index based access methods
- raft-backed access methods
- SQL parser: A handcraft SQL parser without yacc/bison.
- Data Types: null, boolean, i64, double, utf-8 string
- SQL syntax:
BEGIN
,COMMIT
, andROLLBACK
[CREATE|DROP] TABLE ...
and[CREATE|DROP] INDEX ...
UPDATE [TABLE] SET ... WHERE ...
DELETE FROM [TABLE] WHERE ...
SELECT ... FROM ... WHERE ... ORDER BY ...
EXPLAIN SELECT ...
- Full reference at here
- SQL Execution Engine: Simple heuristic-based planner and optimizer supporting expressions, functions and
joins.
- Logical Planner
- Logical Optimizer
- Physical Planner
- Executors
- Function support