This module implemnets Sharding but globally (on multiple distributed Erlang nodes).
Example
First of all, we have to run our app in distributed way, setting
a node name and maybe a cookie. Let's suppose we spawn a node
a@127.0.0.1, and from that node:
% when a tables is created with {scope, g}, the module
% shards_dist is used internally by shards
> shards:new(mytab, [{scope, g}]).
mytab
% from node `a` (local), join `b` and `c` nodes:
> shards:join(mytab, ['b@127.0.0.1', 'c@127.0.0.1']).
['a@127.0.0.1','b@127.0.0.1','c@127.0.0.1']
% let's check the list of joined nodes:
> shards:get_nodes(mytab).
['a@127.0.0.1','b@127.0.0.1','c@127.0.0.1']
Other option is calling shards:new/3 but passing the option
{nodes, Nodes}`, where `Nodes` is the list of nodes you want
to join.
```
> Nodes = [b@127.0.0.1', 'c@127.0.0.1']}].
['b@127.0.0.1','c@127.0.0.1']
option() = {nodes, [node()]} | shards_local:option()
rpc_res(R) = R | {badrpc, Reason::term()}
delete(Tab::atom()) -> true
delete(Tab::atom(), Key::term(), State::shards_state:state()) -> true
delete_all_objects(Tab::atom(), State::shards_state:state()) -> true
delete_object(Tab::atom(), Object::tuple(), State::shards_state:state()) -> true
file2tab(Filename) -> any()
Equivalent to file2tab(Filename, []).
file2tab(Filename::shards_local:filename(), Options::[Option]) -> {ok, Tab::atom()} | {error, Reason::term()}
foldl(Fun::fun((Element::term(), Acc) -> Acc), Acc::term(), Tab::atom(), State::shards_state:state()) -> Acc
foldr(Fun::fun((Element::term(), Acc) -> Acc), Acc::term(), Tab::atom(), State::shards_state:state()) -> Acc
get_nodes(Tab::atom()) -> Nodes::[node()]
info(Tab::atom(), State::shards_state:state()) -> InfoList | undefined
info(Tab::atom(), Item::shards_local:info_item() | nodes, State::shards_state:state()) -> any() | undefined
insert(Tab::atom(), ObjOrObjs::tuple() | [tuple()], State::shards_state:state()) -> true | no_return()
insert_new(Tab::atom(), ObjOrObjs::tuple() | [tuple()], State::shards_state:state()) -> boolean()
join(Tab::atom(), Nodes::[node()]) -> CurrentNodes::[node()]
leave(Tab::atom(), Nodes::[node()]) -> CurrentNodes::[node()]
lookup(Tab::atom(), Key::term(), State::shards_state:state()) -> Result::[tuple()]
lookup_element(Tab::atom(), Key::term(), Pos::pos_integer(), State::shards_state:state()) -> Elem::term() | [term()]
match(Tab::atom(), Pattern::ets:match_pattern(), State::shards_state:state()) -> [Match::[term()]]
match_delete(Tab::atom(), Pattern::ets:match_pattern(), State::shards_state:state()) -> true
match_object(Tab::atom(), Pattern::ets:match_pattern(), State::shards_state:state()) -> [Object::tuple()]
member(Tab::atom(), Key::term(), State::shards_state:state()) -> boolean()
new(Name, Options::[option()]) -> Name
rename(Tab::atom(), Name, State::shards_state:state()) -> Name | no_return()
select(Tab::atom(), MatchSpec::ets:match_spec(), State::shards_state:state()) -> [Match::term()]
select_count(Tab::atom(), MatchSpec::ets:match_spec(), State::shards_state:state()) -> NumMatched::non_neg_integer()
select_delete(Tab::atom(), MatchSpec::ets:match_spec(), State::shards_state:state()) -> NumDeleted::non_neg_integer()
select_reverse(Tab::atom(), MatchSpec::ets:match_spec(), State::shards_state:state()) -> [Match::term()]
tab2file(Tab, Filename, State) -> any()
Equivalent to tab2file(Tab, Filename, [], State).
tab2file(Tab::atom(), Filename::shards_local:filename(), Options::[Option], State::shards_state:state()) -> ok | {error, Reason::term()}
tab2list(Tab::atom(), State::shards_state:state()) -> [Object]
tabfile_info(Filename::shards_local:filename()) -> {ok, TableInfo} | {error, Reason::term()}
take(Tab::atom(), Key::term(), State::shards_state:state()) -> [Object::tuple()]
update_counter(Tab::atom(), Key::term(), UpdateOp::term(), State::shards_state:state()) -> rpc_res(integer() | [integer()])
update_counter(Tab::atom(), Key::term(), UpdateOp::term(), Default::tuple(), State::shards_state:state()) -> Result::integer() | [integer()]
update_element(Tab::atom(), Key::term(), ElementSpec::{Pos, Value} | [{Pos, Value}], State::shards_state:state()) -> boolean()
Generated by EDoc