Redirected from
github.com/ryogrid/samehadadb .
Discover Packages
github.com/ryogrid/SamehadaDB
module
Version:
v0.0.10
Opens a new window with list of versions in this module.
Published: Mar 21, 2023
License: MIT
Opens a new window with license information.
README
README
¶
Overview
Simple Relational Database Implemented in Golang
This code tree is based on Golang ported BusTub RDBMS: go-bustub
original code of go-bustub is 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 spiciness
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 can be used as simple embedded DB (library form)
ATTENTION: SamehadaDB is not developed for productional use! There are no warranties!
By the way, procedure described on next section executes almost all defined unit tests except these of taking long time
Procedure of Executing SamehadaDB (executing 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
Executing all unit tests which test several features and components of SamehadaDB except several tests taking long time
Roadmap
Note:
Statuses described berow are of backend and dont't mean supported features of SamehadaDB when you use our DB through frontend.
(now, embeded DB form only exists)
Predicates on Seq Scan
Multiple Item on Predicate: AND, OR
Predicates: <, >, <=, >=
Null
Inline types (integer, varchar, float, boolean, bigint, smallint, decimal, timestamp, datetime and etc)
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
Alternative of B-tree Index
B-tree Index
Logging/Recovery of Index Data (Redo/Undo)
JOIN
INNER JOIN (Hash Join)
Currently, only two tables JOIN is implemented and condition 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) Protocol
Concurrent Execution of Transactions
Avoidance of phantom problem is not implemented yet
So, current transaction isolation level is "REPEATABLE READ"
Retry of txns aborted due to concurrency control protocol is not implemented yet
Execution Planning from hard coded SQL like method call I/F (like some kind of embedded DB)
Execution Planning from Query Description text (SQL)
Frontend Impl as Embedded DB Library (like SQLite)
Currently, functions of the library are not thread safe and concurrent transaction is not supported
Deduplication of Result Records (Distinct)
Query Optimization
AS clause
JOIN (more than two tables)
Nested Query
DB Connector (Driver) or Other Kind Access Interface
Original Protocol
MySQL or PostgreSQL Compatible Protocol
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
About Skip List Index SamehadaDB has
Advisor
Past work
FunnelKVS: Rust implementation of autonomous distributed key-value store which has REST interfaces
Expand ▾
Collapse ▴
Directories
¶
container
execution
storage
package tablepage
package table
Click to show internal directories.
Click to hide internal directories.