Skip to content

ckampfe/bic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bic

An implementation of Bitcask.

See the paper.

Todo

  • create databases
  • open existing databases
  • merge database files
  • put keys
  • fetch keys
  • delete keys
  • migrate to new file when max file size reached
  • error recovery when hashes do not match
  • todo examples on public fns
  • 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, the package can be installed by adding bic to your list of dependencies in mix.exs:

def deps do
  [
    {:bic, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/bic.