Jump to content

User:PeterJAClark/Draft of Leveled (key-value datastore)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by JosephPearl (talk | contribs) at 10:33, 10 September 2021 (Features). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Leveled
Developer(s)Martin Somner
Initial releaseError: df must be either "yes" or "y" (help)
Stable release
0.9.24 / 1.0.4 / August 7, 2020; 4 years ago (2020-08-07) / March 3, 2020; 5 years ago (2020-03-03)
Repositoryhttps://github.com/martinsumner/leveled/
Written inErlang
TypeDatabase library
LicenseApache License 2.0

Leveled is an open-source on-disk key-value store written in Erlang by Martin Somner.[1] LevelDB is hosted on GitHub under the Apache License 2.0 and has been ported to a variety of Unix-based systems, and macOS.[2]

Features

Leveled is a simple Key-Value store based on the concept of Log-Structured Merge Trees, with the following characteristics:

  • Optimised for workloads with larger values (e.g. > 4KB).
  • Explicitly supports HEAD requests in addition to GET requests:
    • Splits the storage of value between keys/metadata and body (assuming some definition of metadata is provided);
    • Allows for the application to define what constitutes object metadata and what constitutes the body (value-part) of the object - and assign tags to objects to manage multiple object-types with different extraction rules;
    • Stores keys/metadata in a merge tree and the full object in a journal of CDB files
    • Allowing for HEAD requests which have lower overheads than GET requests; and
    • Queries which traverse keys/metadatas to be supported with fewer side effects on the page cache than folds over keys/objects.
  • Support for tagging of object types and the implementation of alternative store behaviour based on type.
    • Allows for changes to extract specific information as metadata to be returned from HEAD requests;
    • Potentially usable for objects with special retention or merge properties.
  • Support for low-cost clones without locking to provide for scanning queries (e.g. secondary indexes).
    • Low cost specifically where there is a need to scan across keys and metadata (not values).
  • Written in Erlang as a message passing system between Actors.

Leveled is not a SQL database. Like other NoSQL and dbm stores, it does not have a relational data model and it does not support SQL queries. It has support for secondary indexes. Leveldb was developed for use as a pure-Erlang backend for the Riak, but can be used as a key-value datastore for any application in the Erlang VM.

See also

References

  1. ^ "Leveled Release Notes". December 07, 2018. Retrieved September 10, 2021. {{cite web}}: Check date values in: |date= (help)
  2. ^ "Leveled on Github". github.com. Retrieved September 10, 2021.