Skip to content

Latest commit

 

History

History
58 lines (38 loc) · 2.74 KB

README.md

File metadata and controls

58 lines (38 loc) · 2.74 KB

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.