<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 26 Nov 2010, at 14:06, Eduardo Martins wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Currently JBoss Cache (along with JTA) is what is holding off<br>Mobicents performance improvements, a profiling session will put<br>everything related with JBC interaction as top hotspots. Note that<br>currently performance is not bad at all, we are at same level as<br>competition but in this business, and unlike Java EE, latency and<br>throughput is all that matters.<br><br>Tell me more about this indirection/references layer, since I believe<br>no locks on child insert/removals will be a must. Also note that we<br>will need to keep a transaction isolation similar to what JBoss Cache<br>provides now, so 2 parallel child inserts/removals must be handled<br>correctly at JTA level too, dunno if it matters at all but just want<br>to define what are the requirements.<br></div></blockquote><div><br></div><div>Well, step 1 should be for you to have a look at the srcs of the Tree module and see how it breaks up tree structured data into flat data. &nbsp;If this is what you would have done manually anyway, then it's already done for you. &nbsp;:-)</div><div><br></div><div><a href="https://github.com/infinispan/infinispan/tree/master/tree/">https://github.com/infinispan/infinispan/tree/master/tree/</a></div><br><blockquote type="cite"><div><br>-- Eduardo<br>..............................................<br><a href="http://emmartins.blogspot.com">http://emmartins.blogspot.com</a><br>http://redhat.com/solutions/telco<br><br>On Fri, Nov 26, 2010 at 1:54 PM, Manik Surtani &lt;manik@jboss.org&gt; wrote:<br><blockquote type="cite"><br></blockquote><blockquote type="cite">On 26 Nov 2010, at 13:38, Eduardo Martins wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">You mean we will get 5-10% if implementing the parent, child relations<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">ourselves, where needed?<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Maybe. &nbsp;Since some of the relationships could be denormalized/flattened, etc.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">That would for sure be worth the data model<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">rework.<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Depends. &nbsp;How much of your time is spent in the data grid? &nbsp;5%? &nbsp;So 5% x 5% = overall 0.25% gain? &nbsp;:-)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">The child relation would be done using a cache map entry with<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">a set/array value? If yes wouldn't that lock the parent on each child<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">insert/removal?<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Yes. &nbsp;Or you could use a layer of indirection/references which will then not lock the hierarchy.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">-- Eduardo<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">..............................................<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">http://emmartins.blogspot.com<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">http://redhat.com/solutions/telco<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">On Fri, Nov 26, 2010 at 1:05 PM, Manik Surtani &lt;manik@jboss.org&gt; wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">On 25 Nov 2010, at 03:24, Eduardo Martins wrote:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Great, finally an easy migration from JBoss Cache.<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Just to know our options in Mobicents future, are there any cons on<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">using this API? Is there a reason to change a data model/schema coming<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">from JBoss Cache, that really takes advantage of node relations<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">parent/child? For instance it's very common to retrieve the set of<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">childs for a node, another common usage is the removal for a complete<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">subtree. We have time to rework this data model if it's not the best<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">usage, we want it as fast as possible, both local and cluster/cloud<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">modes.<br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">There is nothing wrong with using the Tree API, except that it doesn't perform as well as the flat API. &nbsp;Now don't let this scare you off - in terms of performance, we're talking 5 ~ 10% and if the API works better for you, then use it. &nbsp;But you should benchmark for yourself and see whether you need to extract this extra performance in exchange for reworking your data model. &nbsp;YMMV. &nbsp;:-)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Cheers<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Manik<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">--<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Manik Surtani<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">manik@jboss.org<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Lead, Infinispan<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Lead, JBoss Cache<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">http://www.infinispan.org<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">http://www.jbosscache.org<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">infinispan-dev mailing list<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">infinispan-dev@lists.jboss.org<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">https://lists.jboss.org/mailman/listinfo/infinispan-dev<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">infinispan-dev mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">infinispan-dev@lists.jboss.org<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">https://lists.jboss.org/mailman/listinfo/infinispan-dev<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--<br></blockquote><blockquote type="cite">Manik Surtani<br></blockquote><blockquote type="cite">manik@jboss.org<br></blockquote><blockquote type="cite">Lead, Infinispan<br></blockquote><blockquote type="cite">Lead, JBoss Cache<br></blockquote><blockquote type="cite">http://www.infinispan.org<br></blockquote><blockquote type="cite">http://www.jbosscache.org<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite">infinispan-dev@lists.jboss.org<br></blockquote><blockquote type="cite">https://lists.jboss.org/mailman/listinfo/infinispan-dev<br></blockquote><blockquote type="cite"><br></blockquote><br>_______________________________________________<br>infinispan-dev mailing list<br>infinispan-dev@lists.jboss.org<br>https://lists.jboss.org/mailman/listinfo/infinispan-dev<br></div></blockquote></div><br><div>
<span class="Apple-style-span" style="font-size: 12px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>--</div><div>Manik Surtani</div><div><a href="mailto:manik@jboss.org">manik@jboss.org</a></div><div>Lead, Infinispan</div><div>Lead, JBoss Cache</div><div><a href="http://www.infinispan.org">http://www.infinispan.org</a></div><div><a href="http://www.jbosscache.org">http://www.jbosscache.org</a></div><div><br></div></div></span><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br></body></html>