https://github.com/sarthakmakhija/tinydb
Tiny relational DB implementation over an LSM tree based storage engine
https://github.com/sarthakmakhija/tinydb
golang lsm-tree relational-database sql
Last synced: 11 months ago
JSON representation
Tiny relational DB implementation over an LSM tree based storage engine
- Host: GitHub
- URL: https://github.com/sarthakmakhija/tinydb
- Owner: SarthakMakhija
- Created: 2023-06-19T15:17:16.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-23T08:14:36.000Z (over 1 year ago)
- Last Synced: 2025-03-30T10:33:48.010Z (about 1 year ago)
- Topics: golang, lsm-tree, relational-database, sql
- Language: Go
- Homepage:
- Size: 115 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# tinyDB (WIP -> Dropped)
Tiny relational DB implementation over an LSM tree based storage engine. I am not working on this anymore. The project has moved to [gorel](https://github.com/SarthakMakhija/gorel).
# Idea
The idea is to provide a relational database implementation over an LSM tree based storage engine. The implementation will be used alongside my [storage engine workshop](https://github.com/SarthakMakhija/storage-engine-workshop-template).
It will support the following:
**LSM tree based KV storage engine**
- [ ] Persistence
- [ ] Recovery
- [ ] Support for `put(key, value)`
- [ ] Support for `update(key, value)`
- [ ] Support for `get(key)`
- [ ] Support for `delete(key)`
- [ ] Support for the getting all the values by a key prefix
- [ ] Serialized snapshot transaction isolation
- [ ] Concurrent execution
- [ ] (Optional) Compaction
**Relational database**
- [ ] Support for creating tables
- [ ] Support for column data types: INT, STRING, FLOAT
- [ ] Support for creating primary and secondary key
- [ ] Support for INSERT statement
- [ ] Support for SELECT query by the primary key
- [ ] Support for SELECT query by the secondary key
- [ ] Support for SELECT query by non-key columns
- [ ] Query parsing using [goyacc](https://pkg.go.dev/golang.org/x/tools/cmd/goyacc): CREATE TABLE, INSERT INTO, SELECT