Skip to content

fetep/kv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kv

kv is a simple file-backed key-value store.

Inside a kv database ("kvdb"), there exists a set of nodes. Each node has it's own set of key-value data.

Nodes use "/" for namespace. Example node names: "host/bar", "switch/foo".

Keys use "." for namespace. Example key names: "hardware.cpu_model", "foo".

The full canonical "keypath" for a value includes the node and the key name, joined with a '#', optionally with an array index (zero-based) to just refer to one value.

Example paths: "host/bar#hardware.cpu_model" # all values for key 'hardware.cpu_model' "host/bar#service#2" # 3rd value for key 'service'

Data File Format

...

File backed?

kv's design goal is not fancy data storage or massive write performance, it is data portability and ease of access.

The backend data files should be checked into revision control, which makes it easy for other systems to get at the data, provides an audit log, basic ACLs, and rollback capability.

The Vision

kv is just a library. Eventually there will be sample frontends that use kv on the backend, and expose the data. Ideas:

  • kv - command line tool to read/write/manipulate a kvdb
  • kvlookupd - loads all kv nodes in an in-memory searchable index, provides a way to query over the network. periodically stat()-polls and updates kv node data (and indexes).
  • kvrest - read-only REST api

About

file-backed simple key value store

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages