<div dir="ltr">Hi, <div><br><div class="gmail_quote">On Fri, May 22, 2015 at 9:09 AM Erik Søe Sørensen <<a href="mailto:eriksoe@gmail.com">eriksoe@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">The "Erlangic" solution would, I think, be to<br>
- have a process which holds the data;<br>
- have one table (sorted_set) which contains {Time, Key}, where Time is some unique monotonously increasing value (now(), or the recently introduced replacement);<br>
- have another table (set) which contains {Key, Time, Value}.<br>
The process owns the tables, and inserts/deletes from both on each update.<br>
In-process data structures could be used instead of tables. <br>
This gives O(log(N)) update time.<br></p></blockquote><div>Indeed I thought about it, but was afraid it would require to increst the limit of the number of ETS tables in my case and I am not sure what does it imply at the moment. The number of queues can be indeed higher than the current limit.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">
Optimizations can be made, but I'd have to know more about the usage pattern before I'd go into that...</p></blockquote><div><br></div><div>For now I have a process that maintains a queue of items on which I am doing selective receive to fetch from and append to some items to a queue using the queue module.  Due to some events an item could have been already handled on another node I need to discard it in the queue.</div><div><br></div><div>Right now to handle that I keep a list of the discarded items apart and when the discarded item is fetched on queue I ignore it and ask for a new item. With the drawback that I have to keep a place of where the items are queued. So i was thinking to have a data structure that would allows me to quickly check a if the item to discard is queued on that node/process and then remove it or mark it as removed (The other way to do it would be filtering the queue Â and return the new filtered queue but It would be quite inefficient imo). Not sure what's the best data structure for it if it exists.</div><div><br></div><div>I guess having an ordset + dict (or maps) - or something like it - could also do the trick you define above without requiring an ETS but I not sure if it will perform the same.</div><div><br></div><div>Thanks </div></div></div></div>