Riak VS ra

Compare Riak vs ra and see what are their differences.

Riak

Riak is a decentralized datastore from Basho Technologies. (by basho)

ra

A Raft implementation for Erlang and Elixir that strives to be efficient and make it easier to use multiple Raft clusters in a single system. (by rabbitmq)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
Riak ra
1 7
3,902 777
0.4% 1.3%
2.3 8.9
about 2 months ago 5 days ago
Shell Erlang
Apache License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Riak

Posts with mentions or reviews of Riak. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-28.
  • Ask HN: Good examples of fault-tolerant Erlang code?
    4 projects | news.ycombinator.com | 28 Dec 2023
    Step zero is definitely the OTP Design Principles doc (part of the OTP distribution):

    https://www.erlang.org/doc/design_principles/users_guide

    There are some good texts that have more examples:

    Erlang & OTP in Action - https://www.manning.com/books/erlang-and-otp-in-action

    Designing for Scalability with Erlang/OTP - https://www.oreilly.com/library/view/designing-for-scalabili...

    One big example of distributed Erlang is Riak:

    https://github.com/basho/riak

ra

Posts with mentions or reviews of ra. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-14.
  • The Erlang Runtime System
    3 projects | news.ycombinator.com | 14 Feb 2024
    Erlang/OTP doesn't handle leader election, and by itself is bad at handling netsplits.

    There is https://github.com/rabbitmq/ra which is a Raft implementation in Erlang that is Jepsen-tested. You could use it to build "etcd in Erlang", or https://github.com/rabbitmq/khepri which is built on top of Ra.

  • Ask HN: Good examples of fault-tolerant Erlang code?
    4 projects | news.ycombinator.com | 28 Dec 2023
    Just to add to this, there are some implementations of things like consensus algorithms in Erlang such as Ra: https://github.com/rabbitmq/ra
  • Elixir at Ramp
    2 projects | news.ycombinator.com | 24 Nov 2023
  • An Animated Introduction to Elixir
    6 projects | news.ycombinator.com | 8 Nov 2022
    You may find these interesting...

    - "The Onion Layer Theory" https://learnyousomeerlang.com/building-applications-with-ot...

    - "On Erlang, State and Crashes" http://jlouisramblings.blogspot.com/2010/11/on-erlang-state-...

    - "Why Restarting Works" https://ferd.ca/the-zen-of-erlang.html (search for "Heisenbug")

    > you should store the state in the external system

    Disk works too, but if you're multi-node this means you now have a distributed database embedded in your system, which may or may not be your goal :)

    RabbitMQ does this, they developed a library for "persistent, fault-tolerant and replicated state machines" based on Raft: https://github.com/rabbitmq/ra.

  • Question about a Decentralized Timeline
    2 projects | /r/elixir | 19 Dec 2021
  • Building Aggregates in Elixir and PostgreSQL
    2 projects | /r/elixir | 13 Jul 2021
    Here is link number 1 - Previous text "Ra"

What are some alternatives?

When comparing Riak and ra you can also consider the following projects:

CouchDB - Seamless multi-master syncing database with an intuitive HTTP/JSON API, designed for reliability

lasp - Prototype implementation of Lasp in Erlang.

Redis - Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.

MicroRaft - Feature-complete implementation of the Raft consensus algorithm in Java

MongoDB - The MongoDB Database

khepri - Khepri is a tree-like replicated on-disk database library for Erlang and Elixir.

Apache HBase - Apache HBase

asdf - Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

RethinkDB - The open-source database for the realtime web.

Atomix - A Kubernetes toolkit for building distributed applications using cloud native principles

LevelDB - LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

buffstreams - A library to simplify writing applications using TCP sockets to stream protobuff messages