Skip to content

About

HSE is a fast embeddable key-value store designed for SSDs and persistent memory. It is implemented as a C library that links with your application, directly or via alternate language bindings.

Overview

HSE provides functions to create and access a key-value database (KVDB). A KVDB comprises one or more named key-value stores (KVSs), each of which is an independent collection of key-value pairs. A KVS is analogous to a table in a relational database. The HSE data model enables each KVS in a KVDB to be optimized for how the key-value pairs it stores will be accessed.

HSE provides the standard operators for managing key-value pairs in a KVS: put, get, and delete. HSE also provides transactions, cursors, prefix deletes, and other advanced features.

Details on the HSE programming and data models can be found here. Details on how KVDB data is stored in file systems can be found here.

Project Repos

The HSE project includes the following repos:

  • hse contains the HSE library source
  • hse-python contains Python bindings for the HSE API
  • hse-java contains Java bindings for the HSE API
  • hse-mongo is a fork that integrates HSE with MongoDB
  • hse-ycsb is a fork that integrates HSE with the YCSB benchmark
  • rfcs contains RFCs for major enhancements to the HSE library or other project components
  • hse-project.github.io contains the source for this documentation

Instructions for building, installing, and contributing to repo contents are in their local README.md and CONTRIBUTING.md files. Forked repos, such as hse-mongo and hse-ycsb, contain this information in README.md and CONTRIBUTING.md files in the hse directory within those repos. To make these easy to locate, there are symlinks to them named README_HSE.md and CONTRIBUTING_HSE.md in the repo root directory.

Using HSE

After building and installing the hse repo, you can develop HSE applications in C/C++ by including the hse.h header file and linking with libhse-3. Information on using an alternate HSE language binding is included in its associated repo.

Releases

See the release section of each HSE project repo for specific releases and associated release notes. For example, hse releases can be found here.

Releases of the HSE library and associated language bindings use semantic versioning. Releases of forked repos use a versioning scheme that is documented in their associated README.md.

The HSE storage format, API, CLI, configuration parameters, and REST interface may change between major releases. However, we strive to minimize changes to the programming API so that existing HSE applications require little to no porting effort. If the HSE storage format changes, HSE application data must be dumped and reloaded using application-specific tools in order to use the new version of HSE.

HSE 3.0 includes changes to the storage format, API, CLI, configuration parameters, and REST interface that are not backward compatible with previous versions.