- DDL
- Create
- Create Table
- Create Index
- Drop
- Drop Table
- Drop Index
- Alter
- Add Column
- Drop Column
- Create
- DQL
- Select
- Where
- Distinct
- Aggregation: Count / Sum / Avg / Min / Max
- Subquery
- Join: Left / Right / Inner
- Group By
- Having
- Order By
- Limit
- Explain
- Join: Inner/Left/Right
- Alias
- SubQuery(from)
- Show tables
- DML
- Insert
- Update
- Delete
- IndexType
- Primary Key
- Unique Key
- Concurrency Control
- Transaction
- Begin
- Commit
- Rollback
- Isolation Level
- Snapshot Isolation
- Serializable Snapshot Isolation
- Multi-Version Concurrency Control
- Transaction
- Optimization
- RBO
- Predicate Pushdown
- ConstFolder
- Combine Filter
- Coloumn Pruning
- Limit Pushdown
- Combine operator
- RBO
- Execution
- Volcano
- Net
- PSQL Client
- Rust CLI Client
- Server
- JDBC Driver (only a little)
- Storage
- BitCask variant(from toydb)
- LSM variant (from mini-lsm)
- Memory SkipMap (crossbeam-skiplist)
- Sled
We have referred to the following excellent open-source database projects and express our gratitude for their work
- systemxlabs/bustubx
- duckdb/duckdb
- Fedomn/sqlrs: Main reference materials, Optimizer and Executor all refer to the design of sqlrs
- KipData/KipSQL: Main reference materials,refer to a largenumber of SQL layer designs,Excellent Work!
- erikgrinaker/ToyDB: Main reference MVCC Design,Encode and Decode,Storage Engine,Transaction, architecture refer the design of toydb
- skyzh/mini-lsm refer to the LSM design and implementation
- YumingxuanGuo/featherdb reference serializable snapshot isolation
cargo run --release --bin piggysql
then run
psql
or run my tiny client
to enter the postgres client
also connect to the database with JDBC (experimental)
clone the benchmark repo
git clone https://github.com/af8a2a/PiggyBenchmark
run the database
cargo run --release --bin piggysql
run the benchmark!