gtnao / junkdb

junkdb is a Relational Database Management System written in Rust for my own study purposes.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Test

junkdb (1)

Overview

junkdb is a Relational Database Management System written in Rust for my own study purposes.

Screenshot

The following shows REPEATABLE READ implemented via snapshot isolation.

mvcc

Feature

  • Rust-based
  • Basic RDBMS Operations
    • DML
      • CRUD (SELECT, INSERT, DELETE, and UPDATE)
      • Filtering (WHERE)
      • Subquery
      • Join
        • Nested Loop Join
          • Inner Join
          • Left Join
      • Aggregation (GROUP BY and HAVING)
        • Functions (COUNT, SUM, MAX, MIN, AVG)
      • Sorting (ORDER BY and LIMIT)
    • DDL
      • CREATE TABLE
  • Transactions:
    • MVCC (Multi-Version Concurrency Control)
      • Snapshot Isolation
    • Isolation Level
      • READ COMMITTED
      • REPEATABLE READ
    • Vacuum: clean up old data versions.
    • Lock
      • Row-level Exclusive Locking: prevent dirty write.
      • Deadlock Detection
    • Recovery (ARIES-based)
      • Checkpoint
  • Indexing
    • B+ Tree
  • Buffer Pool
    • LRU
  • Optimizer
    • Rule-based
  • Data Types
    • INTEGER, VARCHAR, BOOLEAN
    • NULL
  • Operators
    • Binary (=, <>, <, >, <=, >=, +, -, *, /, %, AND, OR)
    • UNARY (-, NOT)
    • IS NULL, IS NOT NULL
  • Basic SQL Parser
  • CLI

Usage

Server

cargo run server --init

Client

cargo run client

About

junkdb is a Relational Database Management System written in Rust for my own study purposes.

License:Apache License 2.0


Languages

Language:Rust 100.0%