Skip to content

theuntamed839/AtomDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

AtomDB is a key-value storage library that provides an mapping from string keys to string values

Features
Keys and values are arbitrary byte arrays.
Data is stored sorted by key.
Data is automatically compressed using the Snappy compression library.


Theory

Data is first stored in a skip list which is a memtable. there will be threshold size once exceeded the memtable is flushed as the sst file, in level 0

sst is a immutable set of file.

Deletion and updation are done using compaction
since sst are immutable, we can't modify the files.
instead we write a new entry of the key.
if the key is deleted then key and a marker is placed in sst

Compaction is a process where 2 or more sst files are combined, during this process if there are multiple similar keys then the latest value is taken. if the value is deleted then key and a marker is placed.

Compaction leads to a bigger file.

A compression library is used, since the disk io is expensive. and if we reduce the payload we have faster writes.

checksum is used, Crc32c

Basic operations put(key, value), get(key), delete(key);

Limitations 

This is not a SQL database. It does not have a relational data model, it does not support SQL queries, and it has no support for indexes.
currently no multi-threading support.
There is no client-server support builtin to the library. An application that needs such support will have to wrap their own server around the library.

About

Key-value database

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages