Skip to content

Toy SQL database in Rust,written as a learning project

License

Notifications You must be signed in to change notification settings

af8a2a/PiggySQL

Repository files navigation

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages