Files
garage/doc/book/reference-manual/k2v.md
T

2.0 KiB

+++ title = "K2V" weight = 100 +++

Starting with version 0.7.2, Garage introduces an optional feature, K2V, which is an alternative storage API designed to help efficiently store many small values in buckets (in opposition to S3 which is more designed to store large blobs).

K2V is included in release builds since version 0.8.0. Precompiled builds of earlier versions including k2v can be found in our download page under "Extra builds": they can be easily identified as their tag name ends with -k2v (example: v0.7.2-k2v). Otherwise, when compiling Garage, the Cargo feature flag k2v must be activated.

The specification of the K2V API can be found here. This document also includes a high-level overview of K2V's design.

The K2V API uses AWSv4 signatures for authentication, same as the S3 API. The AWS region used for signature calculation is always the same as the one defined for the S3 API in the config file.

Enabling and using K2V

To enable K2V, download and run a build that has the k2v feature flag enabled, or produce one yourself. Then, add the following section to your configuration file:

[k2v_api]
api_bind_addr = "<ip>:<port>"

Please select a port number that is not already in use by another API endpoint (S3 api, admin API) or by the RPC server.

We provide an early-stage K2V client library for Rust which can be imported by adding the following to your Cargo.toml file:

k2v-client = { git = "https://git.deuxfleurs.fr/Deuxfleurs/garage.git" }

There is also a simple CLI utility which can be built from source in the following way:

git clone https://git.deuxfleurs.fr/Deuxfleurs/garage.git
cd garage/src/k2v-client
cargo build --features cli --bin k2v-cli

The CLI utility is self-documented, run k2v-cli --help to learn how to use it. There is also a short README.md in the src/k2v-client folder with some instructions.