https://github.com/tchajed/heedless-db
Simple, persistent key-value store implemented in Haskell to prototype a verified version
https://github.com/tchajed/heedless-db
database key-value
Last synced: about 2 months ago
JSON representation
Simple, persistent key-value store implemented in Haskell to prototype a verified version
- Host: GitHub
- URL: https://github.com/tchajed/heedless-db
- Owner: tchajed
- License: bsd-3-clause
- Created: 2018-12-11T14:21:54.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-31T15:08:54.000Z (over 7 years ago)
- Last Synced: 2025-07-17T22:31:38.698Z (12 months ago)
- Topics: database, key-value
- Language: Haskell
- Homepage:
- Size: 41 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
# Heedless DB
[](https://travis-ci.org/tchajed/heedless-db)
A simple, persistent key-value store implemented in Haskell. This is a prototype for a verified version, along the same lines as [specious-db](https://github.com/tchajed/specious-db), but implemented in Haskell to more closely resemble our shallow embedding and extraction approach for getting runnable code.
The goal is to implement the same functionality as specious-db and benchmark to identify whether Haskell performance is acceptable and what we need to do to ensure that.
## TODO
- Figure out how to handle available operations from data structures. This resembles the problem we have in Coq of keeping track of references to data structures and the filesystem. The current solution for the filesystem involves writing the implementation in a typeclass that has MonadIO + all the operations we want; this is pretty good because it looks like a layer, but it's awkward when there are lots of operations.
- First test: get just a write-ahead log working (meaning port `wal.go`) and run the database only enough to fill the log, compare performance of that.
- Need to figure out how efficient array access in Haskell is using mutable arrays from the `array` package.