SamehadaDB

module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2022 License: MIT

README

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

  • SamehadaDB has no entry point (main function) now
  • There are several unit tests only
  • procedure described on next section executes all defined unit tests

Procedure of Executing SamehadaDB

  • 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
    • Tree Based Index
  • 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, SQL like description)
  • Frontend Impl as Embeded DB Library (like SQLite)
  • 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

Directories

Path Synopsis
container
execution
lib module
server module
storage
access
package tablepage package concurrency package transaction
package tablepage package concurrency package transaction
tuple
package table
package table

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL