<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Lukas do you have any insight into how Titan supports transactions with Cassandra? I know that Titan still uses the thrift API,which presumably rules out the light weight transactions introduced in C* 2.0. These are not to be confused with ACID transactions. It is more of an atomic update using a consensus protocol. Then you have atomic or logged batches which are atomic in the sense that either all of the statements will succeed or none will; however, they can succeed *eventually*. These have more overhead than unlogged batches because the mutations are first written to a batch log. Applying multiple mutations to the same partitions is an atomic operation. In other words, whether you update 1 or 50 columns, if it is done within the same partition (and within the same operation), it is atomic.<div class=""><br class=""></div><div class="">My point being that Cassandra is definitely not a transactional data store, so I am really curious about what Titan is doing.<br class=""><div class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 23, 2016, at 1:48 PM, Lukas Krejci &lt;<a href="mailto:lkrejci@redhat.com" class="">lkrejci@redhat.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">On 02/23/2016 07:42 PM, Jay Shaughnessy wrote:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">Lukas,<br class=""><br class="">That's excellent news. &nbsp;Multiple backends is not something we really<br class="">want to deal with. &nbsp;Also, it might be nice to see a short presentation<br class="">on the "best practices" for Tx handling. &nbsp;But then again, that Tx stuff<br class="">is handled at the Gremlin level? &nbsp;So, perhaps not relevant to direct C*<br class="">consumers like Alerts.<br class=""><br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">You're right. Inventory uses Gremlin to handle transactions, so it<span class="Apple-converted-space">&nbsp;</span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">doesn't directly "see" what is Titan doing behind the scenes.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">On 2/23/2016 12:43 PM, Lukas Krejci wrote:<br class=""><blockquote type="cite" class="">Hi all,<br class=""><br class="">lately I've become really dissatisfied with how Inventory performed and<br class="">semi-publicly blamed Titan for that (because that was what looked like<br class="">the cause of all world's problems in my then uneducated eyes ;) ).<br class=""><br class="">I decided to do some performance comparisons. Because we didn't want<br class="">Hawkular to ship with 2 different NoSQL backends (C* for metrics and<br class="">whatever else for Inventory), I chose an RDBMS as a good conservative<br class="">alternative (because people, IMHO, are still more comfortable dealing<br class="">with an RDBMS than with NoSQL databases).<br class=""><br class="">Currently, inventory is written against the graph DSL called Gremlin<br class="">(from Tinkerpop 2.6.0). Fortunately, there exists a "toy" SQL backend<br class="">for Tinkerpop 2 that we could try and see if it performed any good<br class="">(which would frankly be surprising, given the fact it stores the graph<br class="">data rather naively). With some luck, no code would have to be changed<br class="">on our side to see the results.<br class=""><br class="">We had no such luck.<br class=""><br class="">Making the inventory run with the SQL backend was literally a day worth<br class="">of work (if that) and the first preliminary tests showed that Inventory<br class="">with Postgres backend performed much much better that Titan with<br class="">embedded Cassandra. But the tests also uncovered some problems with the<br class="">way Inventory code handled transactions.<br class=""><br class="">Fast forward 3 weeks and see large parts of Hawkular inventory updated<br class="">to correctly handle transactions. Now a single call to Inventory really<br class="">results in at most 1 transaction in the backend.<br class=""><br class="">So, I went and re-ran the tests. Also, I refrained from using embedded<br class="">Cassandra and instead use a locally running 2-node cluster.<br class=""><br class="">The results caught me by surprise. Not so much that the naive SQL<br class="">backend didn't perform particularly well, but the difference between the<br class="">performance of Titan before and after the transaction handling fixes.<br class=""><br class="">To not keep you waiting any longer for the results: Titan + C* is the<br class="">winner.<br class=""><br class="">For nice charts that include comparison to the old misbehaving impl, see:<br class=""><a href="https://dashboards.ly/ua-tALzrY9rEoRBXvsLXbZJHT" class="">https://dashboards.ly/ua-tALzrY9rEoRBXvsLXbZJHT</a><br class=""><br class="">Cheers,<br class=""><br class=""></blockquote><br class=""><br class=""><br class="">_______________________________________________<br class="">hawkular-dev mailing list<br class=""><a href="mailto:hawkular-dev@lists.jboss.org" class="">hawkular-dev@lists.jboss.org</a><br class="">https://lists.jboss.org/mailman/listinfo/hawkular-dev<br class=""><br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">--<span class="Apple-converted-space">&nbsp;</span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Lukas Krejci</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">hawkular-dev mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:hawkular-dev@lists.jboss.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">hawkular-dev@lists.jboss.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.jboss.org/mailman/listinfo/hawkular-dev</a></div></blockquote></div><br class=""></div></div></div></body></html>