Skip to content

andrewdavidmackenzie/anna

 
 

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. A more detailed description of the system design and the coordination-free consistency mechanisms, as well as an evaluation and comparison against other state-of-the-art systems can be found in our ICDE 2018 paper.

Anna also is designed to be a cloud-native, autoscaling system. When deployed in a cluster, Anna comes with a monitoring subsystem that tracks workload volume, and responds with three key policy decisions: (1) horizontal elasticity to add or remove resources from the cluster; (2) selective replication of hot keys; and (3) data movement across two storage tiers (memory- and disk-based) for cost efficiency. This enables Anna to maintain its extremely low latencies while also being orders of magnitude more cost efficient than systems like AWS DynamoDB. A more detailed description of the cloud-native design of the system can be found in our VLDB 2019 paper.

CLI

This repository has interactive CLI's built using provided client libraries in three languages:

  • C++
  • Python
  • Rust

Building

See more detailed instructions on building in building-anna

Running Anna

See more detailed instructions on running anna in running

More Information on Anna

License

The Project is licensed under the Apache v2 License.

About

A low-latency, cloud-native KVS

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 73.1%
  • Rust 11.9%
  • Python 6.8%
  • CMake 5.8%
  • Shell 1.1%
  • Makefile 1.1%
  • Dockerfile 0.2%