Skip to content

ujihisa/SamehadaDB

 
 

Repository files navigation

Overview

This code tree is based on Golang ported BusTub RDBMS codes: go-bustub.
original codes of go-bustub are here.

What is Samehada?

  • Samehada, which literally means shark skin, is a tool used to grate wasabi, usually for sushi, but also for other Japanese cuisines
  • Samehada features its grid shape that forms air bubbles between the grated wasabi, minimizing unnecessary spiceness
  • We are proud to call SamehadaDB because the grid produces a pleasant taste and aroma with a nice harmony
  • (The text in this section was contributed by ujihisa. Thanks ujihisa)

Current Status

Procedure of Executing SamehadaDB (unit tests are executed)

  • Please install golang environment with package system your OS has (apt, yum, brew ...etc)
    • If you use Windows, you can select both Windows native environment and WSL Ubuntu environment
  • If you select Windows native environments or golang environment which is installed with package system can't execute SamehadaDB, you should install official binary directly
  • Executing all unit tests which test several features and components of SamehadaDB

Roadmap

  • Predicates on Seq Scan
  • Multiple Item on Predicate: AND, OR
  • Predicates: <, >, <=, >=
  • Null
  • Inline types (integer, varchar, float, bigint, smallint, decimal, timestamp, datetime)
  • Delete Tuple
  • Update Tuple
    • RESTRICTION: a condition which update transaction aborts on exists
  • LIMIT / OFFSET
  • Varchar
  • Persistent Catalog
  • Updating of Table Schema
  • LRU replacer
  • Latches
  • Transactions
  • Rollback When Abort Occurs
  • Logging
  • Checkpointing
    • Simple Checkpointing (all transaction block until finish of checkpointing)
    • Fuzzy Checkpointing (ARIES)
  • Recovery from Logs
  • Index
    • Hash Index
      • Hash index can be used only equal(==) operator is specified to index having columns
      • When the system exits in not graceful, reconstruction of index data is needed at reboot of system now
    • SkipList Index
    • Tree Based Index
    • Logging/Recovery of Index Data (Redo/Undo)
  • JOIN
    • INNER JOIN (Hash Join)
      • Currently, only two tables JOIN is implemented and codition specified at ON clause should be composed of single item
    • CROSS JOIN
  • Aggregations (COUNT, MAX, MIN, SUM on SELECT clause including Group by and Having)
  • Sort (ORDER BY clause)
  • Tuple Level Locking With Strong Strict 2-Phase Locking (SS2PL) Protcol
  • Concurrent Execution of Transactions
  • Execution Planning from hard coded SQL like method call I/F (like some kind of embeded DB)
  • Execution Planning from Query Description text (SQL)
  • Frontend Impl as Embeded DB Library (like SQLite)
    • Currently, functions of the library are not thread safe and cuncurrent transaction is not supported
  • Eliminate Duplication (Distinct)
  • Query Optimization
  • AS clause
  • JOIN (more than two tables)
  • Nested Query
  • DB Connector (Driver) or Other Kind Access Interface
    • Original Protcol
    • MySQL or PostgreSQL Compatble Protcol
    • REST
  • Deallocate and Reuse Page
    • Need tracking page usage by BufferPoolManager or TableHeap and need bitmap in header page corresponding to the tracking
  • UNION clause
  • Eliminate Data Processing with Placing All Scanned Tuples on the Memory
  • Communication over SSL/TLS
  • Authentication

More Info

Advisor

Past work

FunnelKVS: Rust implementation of autonomous distributed key-value store which has REST interfaces

About

A Simple Relational Database implemented in Golang

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%