[erlang-questions] is storing complex objects in ets a good idea?

Ludovic Coquelle <>
Mon Apr 16 09:02:12 CEST 2007

Your answer make me understand than ets is more like a DB than like a dict.

So if my current matrix representation is something like:
{line key, dict-of-column-values}
a new implementation with ets should split the dict-of-column structure:
{line key, column key 1, value}
{line key, column key 2, value}

Btw, it was not clear to me from the doc than select and lookup imply
different efficiency results.

Thank you very much.

On 4/16/07, Ulf Wiger <> wrote:
> 2007/4/16, Ludovic Coquelle <>:
> >
> > Hi,
> >
> > In my application, I have to store a huge (but sparse) 2D matrix. I
> > implemented that successfully using dict-of-dict kind of structure.
> >
> > I was then thinking to use a ets-of-dict structure: each line is a dict
> > (containing all colum values) and I store each line (a dict) as an entry of
> > a ets structure.
> > But I read in the doc introduction of ets that "In the current
> > implementation, every object insert and look-up operation results in one
> > copy of the object.". Does this means that each access (even read) to an
> > element of my matrix would imply a new dict copy?
> >
> Yes. While ets outperforms all other alternatives for random access for
> sets
> of small objects (at least sets of size > 20), it doesn't necessarily do
> so for
> large objects.
> But if a dict-of-dict structure works, you might want to consider just
> using an
> ordset ets table. If you have a tuple as the key in an ordset table,
> ets:select(),
> using a pattern where the first part of the key is bound, will be very
> efficient.
> You can also create ets tables where the tuples stored have only one
> element -
> the key. Mnesia doesn't let you do that, but ets does.
> BR,
> Ulf W
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070416/59ec2a28/attachment.html>

More information about the erlang-questions mailing list