af8a2a / PiggySQL

Toy SQL database in Rust,written as a learning project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PiggySQL - a relational database

  • DDL
    • Create
      • Create Table
      • Create Index
    • Drop
      • Drop Table
      • Drop Index
    • Alter
      • Add Column
      • Drop Column
  • 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
  • Optimization
    • RBO
      • Predicate Pushdown
      • ConstFolder
      • Combine Filter
      • Coloumn Pruning
      • Limit Pushdown
      • Combine operator
  • 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

References

We have referred to the following excellent open-source database projects and express our gratitude for their work

Run PiggySQL

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)

Benchmark

clone the benchmark repo

git clone https://github.com/af8a2a/PiggyBenchmark

run the database

cargo run --release --bin piggysql

run the benchmark!

About

Toy SQL database in Rust,written as a learning project

License:MIT License


Languages

Language:Rust 99.9%Language:Dockerfile 0.1%Language:PLpgSQL 0.0%