This code tree is based on Golang ported BusTub RDBMS codes: go-bustub.
original codes of go-bustub are here.
- 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)
- SamehadaDB can be used as simple embeded DB (library form)
- Simple Single Page Application Demo (TODO App)
- Above demo uses SamehadaDB on backend API server
- ATTENTION: SamehadaDB is not developed for productional use! There are no waranties!
- By the way, procedure described on next section executes all defined unit tests
- 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
- Please refer Download and Install - The Go Programming Language
- Executing all unit tests which test several features and components of SamehadaDB
- $ git clone https://github.com/ryogrid/SamehadaDB.git
- $ cd SamehadaDB
- $ go clean -testcache; go test ./... -v
- 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)
- Hash 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
- INNER JOIN (Hash 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
- kumagi and more!
FunnelKVS: Rust implementation of autonomous distributed key-value store which has REST interfaces