storage

package module
v0.0.0-...-b47ea92 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2021 License: MIT Imports: 0 Imported by: 0

README

Storage algorithms in golang

GoDoc Go Report Card

Package storage implement a collection of storage algorithm and necessary tools and libraries. Applications wishing to use this package please checkout interfaces defined under api/.

As of now, two data structures are available for indexing key,value entries:

  • llrb in memory left-leaning red-black tree
  • bubt immutable, durable bottoms up btree.
  • bogn multi-leveled, lsm based, ACID compliant storage.

There are some sub-packages that are common to all storage algorithms:

  • flock read-write mutex locks across process.
  • lib collections of helper functions.
  • lsm implements log-structured-merge.
  • malloc custom memory alloctor, can be used instead of golang's memory allocator or OS allocator.

How to contribute

Issue Stats Issue Stats

  • Pick an issue, or create an new issue. Provide adequate documentation for the issue.
  • Assign the issue or get it assigned.
  • Work on the code, once finished, raise a pull request.
  • Gostore is written in golang, hence expected to follow the global guidelines for writing go programs.
  • If the changeset is more than few lines, please generate a report card.
  • As of now, branch master is the development branch.

Documentation

Overview

Package storage implement a collection of storage algorithm and necessary tools and libraries.

api:

Interface specification to access gostore datastructures.

bubt:

A version of Bayer-Tree for sorting and retrieving {key,value} entries. Index built bottoms up, hence Bottoms Up BTree, and kept immutable for rest of its lifetime.

bogn:

Multi leveled, LSM based, ACID compliant, storage package.

flock:

File locking library for linux, mac and windows. Similar to sync.RWMutex and works across processes.

lib:

Convinience functions that can be used by other packages. Package shall not import packages other than golang's standard packages.

llrb:

A version of Left Leaning Red Black tree for sorting and retrieving {key,value} entries. Index resides entirely in memory with optional Multi Version Concurrency Control.

lsm:

Implement Log-structured-merge between two indexes.

malloc:

Custom memory management for storage algorithms.

Directories

Path Synopsis
Package api define types and interfaces common to all storage algorithms implemented in gostore.
Package api define types and interfaces common to all storage algorithms implemented in gostore.
Package bubt builds Btree bottoms up and keeps it immutable.
Package bubt builds Btree bottoms up and keeps it immutable.
Package flock provides read-write mutex locks across process for Linux, Mac and Windows.
Package flock provides read-write mutex locks across process for Linux, Mac and Windows.
Package lib provide useful functions and features that are not particularly tied up with any storage algorithm.
Package lib provide useful functions and features that are not particularly tied up with any storage algorithm.
Package llrb implement a self-balancing verions of binary-tree, called, LLRB (Left Leaning Red Black).
Package llrb implement a self-balancing verions of binary-tree, called, LLRB (Left Leaning Red Black).
Package lsm implement log-structure-merge for lsm enable datastructures.
Package lsm implement log-structure-merge for lsm enable datastructures.
Package malloc supplies threadsafe concurrent memory allocator useful for MVCC friendly storage data structures.
Package malloc supplies threadsafe concurrent memory allocator useful for MVCC friendly storage data structures.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL