[erlang-questions] Most performant way to store/search a bag
Wed May 2 21:14:17 CEST 2012
I've been looking into similar problem. I would not advice to partition ets by event type. You would not gain anything... a single ets should work. You are right that foldl over large table might be expensive:
* with ordered_set ets and ets:next / ets:prev you might implement efficient "fold" through particular event type only.
* with bag you can use select to retrieve a subset of keys according to match spec.
You could look either gproc or https://github.com/fogfish/pts they might suite your needs.
On May 2, 2012, at 7:54 PM, Bob Ippolito wrote:
> You could look at how gproc does it, or just use gproc.
> On Wednesday, May 2, 2012, AD wrote:
> I have a problem where i need to map event_ids to connection objects (for use in websockets to broadcast an event). I am trying to determine the most efficient way to map 1 event_id to possibly several thousand connection objects. Ultimately I would need to find every connection object mapped to an ID and then send an event to each connection object. Is using an ETS bag and then using ets:foldl() to loop through the most optimal ? I was thinking of breaking down each event_type into a separate ETS table and then storing the event_id for that event_type in the respective ETS table with the connection object.
> Thoughts welcome.
> erlang-questions mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions