shards

Transparent and out-of-box Sharding support for Erlang/Elixir ETS tables!

Github stars Tracking Chart

Shards

ETS tables on steroids!

Sharding support for ETS tables out-of-box.

Build Status

Why might we need Sharding on ETS tables? Well, the main reason is
to keep the lock contention under control, in order to scale-out ETS tables
(linearly) and support higher levels of concurrency without lock issues;
specially write-locks, which most of the cases might cause significant
performance degradation.

Therefore, one of the most common and proven strategies to deal with these
problems is Sharding or Partitioning; the principle
is pretty similar to DHTs.

This is where Shards comes in. Shards is an Erlang/Elixir library
compatible with the current ETS API, which implements
Sharding or Partitioning on top of ETS tables,
completely transparent and out-of-box.

See the getting started guide
and the online documentation.

List of compatible ETS functions

Installation

Erlang

In your rebar.config:

{deps, [
  {shards, "0.6.1"}
]}.

Elixir

In your mix.exs:

def deps do
  [{:shards, "~> 0.6"}]
end

Check out the getting started guide to learn
more about it.

  • Documentation - Hex Docs.

  • Blog Post -
    Transparent and out-of-box sharding support for ETS tables in Erlang/Elixir.

  • ExShards – Elixir wrapper for
    shards; with extra and nicer functions.

  • Nebulex – Distributed Caching
    framework for Elixir.

  • KVX – Simple Elixir in-memory Key/Value
    Store using shards (default adapter).

  • Cacherl Distributed Cache
    using shards.

Testing

$ make test

You can find tests results in _build/test/logs, and coverage in
_build/test/cover.

NOTE: shards comes with a helper Makefile, but it is just a simple
wrapper on top of rebar3, therefore, you can do everything using rebar3
directly as well (e.g.: rebar3 do ct, cover).

Building Edoc

$ make doc

NOTE: Once you run the previous command, a new folder doc is created,
and you'll have a pretty nice HTML documentation.

Copyright (c) 2016 Carlos Andres Bolaños R.A.

Shards source code is licensed under the MIT License.

Main metrics

Overview
Name With Ownercabol/shards
Primary LanguageErlang
Program languageMakefile (Language Count: 2)
Platform
License:MIT License
所有者活动
Created At2016-01-30 15:34:43
Pushed At2024-05-25 11:30:11
Last Commit At2024-05-25 13:18:27
Release Count16
Last Release Namev1.1.1 (Posted on )
First Release Namev0.1.0 (Posted on )
用户参与
Stargazers Count294
Watchers Count12
Fork Count36
Commits Count109
Has Issues Enabled
Issues Count47
Issue Open Count3
Pull Requests Count13
Pull Requests Open Count1
Pull Requests Close Count2
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private