Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ckampfe/bic
An implementation of Bitcask
https://github.com/ckampfe/bic
bitcask databases elixir erlang storage-engine
Last synced: 16 days ago
JSON representation
An implementation of Bitcask
- Host: GitHub
- URL: https://github.com/ckampfe/bic
- Owner: ckampfe
- License: bsd-3-clause
- Created: 2024-04-14T03:25:28.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-04-24T02:30:53.000Z (7 months ago)
- Last Synced: 2024-10-16T15:31:29.873Z (about 1 month ago)
- Topics: bitcask, databases, elixir, erlang, storage-engine
- Language: Elixir
- Homepage: https://riak.com/assets/bitcask-intro.pdf
- Size: 46.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bic
An implementation of [Bitcask](https://en.wikipedia.org/wiki/Bitcask).
See [the paper](https://riak.com/assets/bitcask-intro.pdf).
## Todo
- [x] create databases
- [x] open existing databases
- [x] merge database files
- [x] put keys
- [x] fetch keys
- [x] delete keys
- [x] migrate to new file when max file size reached
- [ ] error recovery when hashes do not match
- [ ] todo examples on public fns
- [x] some kind of lock to prevent stale reads during merge
- [ ] investigate mechanisms for what to do if keydir is locked during merge
- [ ] the existing "lock" is only valid at the moment it is returned.
it has no lexical scope or anything like that,
meaning that any of the subsequent file operations
could be invalid and unsafe. need to figure out some way to manage this.## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `bic` to your list of dependencies in `mix.exs`:```elixir
def deps do
[
{:bic, "~> 0.1.0"}
]
end
```Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at .