Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Erlang
  3. riak_dt

riak_dt

Apache-2.0Erlangriak_kv-3.0.0

A reusable Erlang library of state-based convergent replicated data types (CRDTs) with QuickCheck testing.

GitHubGitHub
357 stars69 forks0 contributors

What is riak_dt?

riak_dt is an Erlang library implementing state-based convergent replicated data types (CRDTs). It provides conflict-free data structures that guarantee eventual consistency in distributed systems without requiring coordination between nodes. The library is based on established academic research and includes rigorous QuickCheck testing for reliability.

Target Audience

Erlang developers building distributed systems that require eventual consistency, such as databases, real-time collaborative applications, or fault-tolerant services.

Value Proposition

Developers choose riak_dt for its research-backed, well-tested CRDT implementations that simplify building reliable distributed systems. It offers proven correctness through QuickCheck testing and eliminates the need for custom conflict resolution logic.

Overview

Convergent replicated datatypes in Erlang

Use Cases

Best For

  • Building distributed databases with eventual consistency guarantees
  • Implementing conflict-free data structures in Erlang/OTP applications
  • Developing real-time collaborative applications with automatic conflict resolution
  • Creating fault-tolerant services that require data replication across nodes
  • Research and education about CRDT implementations in distributed systems
  • Adding CRDT support to existing Erlang-based distributed systems

Not Ideal For

  • Projects not using Erlang or Elixir, as the library is implemented solely in Erlang
  • Systems requiring strong consistency guarantees, such as financial transaction processing, since CRDTs are designed for eventual consistency
  • Teams looking for a turnkey distributed database solution, as riak_dt is a library requiring custom integration rather than a pre-built system
  • Simple distributed applications where coordination overhead is acceptable and the complexity of CRDTs adds unnecessary overhead

Pros & Cons

Pros

Research-Backed Design

Based on the seminal paper 'A Comprehensive study of Convergent and Commutative Replicated Data Types,' ensuring theoretical soundness and practical reliability, as highlighted in the README.

Rigorous QuickCheck Testing

Uses property-based testing with QuickCheck to extensively validate correctness and edge cases, providing high confidence in the implementations for distributed systems.

Erlang Concurrency Benefits

Implemented in Erlang, leveraging its native support for high concurrency and fault tolerance, making it ideal for building robust distributed applications.

Reusable Library

Designed as a standalone library for integration into other Erlang/OTP applications, offering flexibility for developers to incorporate CRDTs into custom systems.

Cons

Erlang Ecosystem Lock-in

The library is only usable within Erlang or Elixir projects, limiting its applicability to other programming languages and ecosystems.

Integration Complexity

As a library, it requires significant effort to integrate into a full distributed system, unlike databases with built-in CRDT support, which can increase development time.

Sparse Documentation

The README is minimal, and users may need to rely on the source code or academic papers for detailed implementation guidance, posing a barrier to entry.

Frequently Asked Questions

Quick Stats

Stars357
Forks69
Contributors0
Open Issues9
Last commit3 years ago
CreatedSince 2011

Tags

#otp#distributed-systems#data-structures#fault-tolerance#erlang#crdt#concurrency#quickcheck#eventual-consistency

Built With

E
Erlang

Included in

Erlang1.7k
Auto-fetched 17 hours ago

Related Projects

stateboxstatebox

Erlang state "monad" with merge/conflict-resolution capabilities. Useful for Riak.

Stars255
Forks17
Last commit11 years ago
datumdatum

pure functional and generic programming for Erlang

Stars127
Forks9
Last commit1 year ago
erlandoerlando

Erlando

Stars1
Forks6
Last commit10 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub