Skip to content
 
 

Repository files navigation

Anna

codecov License

Anna is a low-latency, autoscaling key-value store developed in the RISE Lab at UC Berkeley.

Design

The core design goal for Anna is to avoid expensive locking and lock-free atomic instructions, which have recently been shown to be extremely inefficient. Anna instead employs a wait-free, shared-nothing architecture, where each thread in the system is given a private memory buffer and is allowed to process requests unencumbered by coordination. To resolve potentially conflicting updates, Anna encapsulates all user data in lattice data structures, which have associative, commutative, and idempotent merge functions. As a result, for workloads that can tolerate slightly stale data, Anna provides best-in-class performance.

For more details, see:

Research Papers

  • ICDE 2018 — "Anna: A KVS For Any Scale" — system design, coordination-free consistency, evaluation
  • VLDB 2019 — "Autoscaling Tiered Cloud Storage in Anna" — cloud-native design, policy engine, cost-performance evaluation

Clients

Anna has four client implementations, each with a library and CLI:

Client Library CLI Binary Language
C++ anna-client-lib anna-cli C++
Rust annalib anna Rust
Python anna package anna-py Python
Go annalib anna-go Go

All clients support the same operations (GET, PUT, GET_SET, PUT_SET, GET_CAUSAL, PUT_CAUSAL) and are tested against shared golden files (tests/shared/cli/).

Building

See detailed instructions in building anna.

Running Anna

See detailed instructions in running anna.

More Information

License

The Project is licensed under the Apache v2 License.

About

A low-latency, cloud-native KVS

Resources

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages