[erlang-questions] Alternatives to Erlang

Jesper Louis Andersen <>
Wed Feb 13 17:58:03 CET 2013



On Feb 11, 2013, at 6:29 PM, Maruthavanan Subbarayan <> wrote:

> Hi,
> 
> I am on the way to creating an application which would create atoms dynamically.
> 
> These atoms are created because I have user registering into my system and each user has set of 10 mnesia tables to be created. Since atoms has a limitation I am afraid that if 100K users register into my system I may run of atoms for creating tables for more users.
> 
> Creating an ETS table with name will give me table identifier with integer. Does a similar thing exists for mnesia too?
> 

You will run out of ETS tables long before you run out of atoms with that solution. You should probably have 10 mnesia tables in all, and then use a key where the user is part. That is, instead of storing `Key` as your key, you store `{User, Key}`. This means you would need 10 tables in all. And the performance would probably be better than keeping a large number of small tables.

As for the atom limit, let users be stored as (small) binaries or integers. Then you avoid that problem entirely. If you need to register a process under a user id, then use the `gproc` application by Ulf Wiger to maintain the lookup table for you. Look at the {via, …} registration in gen_server's for some hint.

Jesper Louis Andersen
  Erlang Solutions Ltd., Copenhagen





More information about the erlang-questions mailing list