User:PeterJAClark/Draft of Leveled (key-value datastore)
This is a Wikipedia user page. This is not an encyclopedia article or the talk page for an encyclopedia article. If you find this page on any site other than Wikipedia, you are viewing a mirror site. Be aware that the page may be outdated and that the user in whose space this page is located may have no personal affiliation with any site other than Wikipedia. The original page is located at https://en.wikipedia.org/wiki/User:PeterJAClark/Draft_of_Leveled_(key-value_datastore). |
This is a draft article. It is a work in progress open to editing by anyone. Please ensure core content policies are met before publishing it as a live Wikipedia article. Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL Last edited by UnitedStatesian (talk | contribs) 3 years ago. (Update) |
Developer(s) | Martin Sumner |
---|---|
Initial release | 11 May 2019 |
Stable release | 0.9.24 / 1.0.4
/ August 7, 2021 / March 3, 2021 |
Repository | https://github.com/martinsumner/leveled/ |
Written in | Erlang |
Type | Database library |
License | Apache License 2.0 |
Leveled is an open-source on-disk key-value store written in Erlang by Martin Sumner.[1] Leveled is hosted on GitHub under the Apache License 2.0 and has been ported to a variety of Unix-based systems, and macOS.[2] Leveled is intended to be used as a Key-Value store within applications running on the BEAM virtual machine, and is primarily used on the Riak database.
Features
[edit]Leveled is a simple Key-Value store based on the concept of Log-Structured Merge Trees, with the following characteristics[1]:
- 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. Leveled 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
[edit]References
[edit]- ^ a b "Leveled Release Notes". December 7, 2018. Retrieved September 10, 2021.
- ^ "Leveled on Github". github.com. Retrieved September 10, 2021.
External links
[edit]Category:2018 software Category:Bigtable implementations Category:Erlang libraries Category:Key-value databases Category:NoSQL Category:Database engines Category:Embedded databases Category:Software using the Apache 2.0 license