[erlang-questions] how: mnesia: id/generator in a cluster
Peter K Chan
peter@REDACTED
Tue Nov 6 17:20:18 CET 2007
That's a good question. I wonder about the same thing myself. Here are
some of my immature thoughts at the moment:
- You may not have to use entity-relation; store the entity data
directly in each table.
- Use a local ID generator that generates {node(), ID}
- I am not sure about your first two methods of using the table's size
or ordering for ID generation. What happens if you remove a record?
Peter
-----Original Message-----
From: erlang-questions-bounces@REDACTED
[mailto:erlang-questions-bounces@REDACTED] On Behalf Of Dmitri Girenko
Sent: Tuesday, November 06, 2007 8:58 AM
To: erlang-questions@REDACTED
Subject: [erlang-questions] how: mnesia: id/generator in a cluster
Hi all,
Having come from J2EE world I find it very difficult to get rid of all
the patterns that I'm used to. There is one that can be named ID
generator.
I have a set of unique objects that have to be stored in the DB
(mnesia). I have to generate short unique numeric ID for those items. In
my previous life usually a DB procedure/generators were used to ensure
ID uniqueness in a cluster environment. But how can I achieve this
functionality in OTP?
Here are a few ideas that come to my mind:
1. use ordered_set and select last.id + 1.
Adds 1 extra select per insert.
2. use table size + 1.
1 extra query, but maybe it's optimized enough?
Both these have runtime overhead + race conditions.
3. create a separate singleton process that initializes counter to
table_size + 1 and dispatches the "next values".
OMG. Singleton in a cluster. Maybe application with failover is
better? But why waste a whole application on just sequence generator.
4. Use phash(Item).
but how to handle collisions then?
Any recommendations?
Best regards,
Dmitri Girenko
_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://www.erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list