A minimal custom relational database implementation in Python for learning database internals.
- CREATE DATABASE - Database creation and management
- CREATE TABLE - Table creation with columns, constraints, and indexes
- UUIDv7 - Timestamp-ordered UUID generation for efficient indexing
- INSERT - Row insertion with auto-generated UUIDs
- SELECT - Query data with column aliases (AS)
- LEFT JOIN - Left outer join between tables
- RIGHT JOIN - Right outer join between tables
- Tables stored as JSON files (one file per table)
- Each table contains schema (columns, indexes) and data (rows)
- File-based storage in database directories
from custom_rdb import CustomRDB
# Initialize database
db = CustomRDB("./data")
db.create_database("demo_db")
db.use_database("demo_db")
# Create tables
db.create_table("""
CREATE TABLE users (
id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
name VARCHAR(100)
)
""")
# Insert data
db.insert("users", [db.uuidv7(), "Alice"])
# Query data
results = db.select("users")
print(results)
# Joins
joined = db.left_join("users", "orders", "id", "user_id")custom_rdb.py- Core database enginecreate_table.py- Table creation parsersql_functions.py- SQLite wrapper functionssql_demo.sql- SQL examples
This project demonstrates:
- SQL parsing and execution
- Table storage and indexing
- Join algorithms
- UUID-based primary keys
- Database file organization
- No transactions or ACID guarantees
- Limited SQL syntax support
- No query optimization
- JSON-based storage (not production-ready)
Educational use only.