tag:blogger.com,1999:blog-138381842024-03-07T23:53:03.966+01:00Luca Garulli - The Zion City (OrientDB)Luca is the <b>CEO</b> and <b>Founder</b> at <b><a href="http://orientdb.com">OrientDB</a></b>, the first Multi-Model NoSQL DBMS with a true Distributed Graph Database Engine. He was also a member of <b>JDO</b> Expert Groups for Java.Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.comBlogger139125tag:blogger.com,1999:blog-13838184.post-91145882183896336632016-01-11T21:00:00.000+01:002016-01-11T22:34:33.392+01:00Jill Ray, the best co-founder I could ever have<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Only 3 years ago, OrientDB Company was a startup at the first stage where all the efforts were on the product: no sales, no marketing, just an open source software that I created with a few contributors around the world that worked on it for free. OrientDB was only for a few nerds. The world didn’t know OrientDB and the amazing things it could do.</span></div>
<b id="docs-internal-guid-9e0888fa-310e-29a6-b867-bd19147d7490" style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">On January 11, 2013, exactly 3 years ago from today, I met Jill Ray in Rome, Italy. After that day, everything changed in OrientDB. Jill agreed to join my efforts to take OrientDB to the next level. She worked with me as the best co-founder I could ever have. Days, nights and weekends were all busy on building the stairs to bring the company to where it is, today.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Jill worked on the creation of the new “OrientDB face” through the new website and an active participation on the social channels. Jill was the source of the best ideas and doggedly pursued them and eventually turning them into reality with an incredible energy.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">When Gartner contacted me to be included in the Magic Quadrant 2013, I wondered why Gartner was monumentally important. Fortunately, Jill knew them very well and she understood its impact to success. We worked together to achieve a spot in the Magic Quadrant and we succeed doing so: OrientDB was the first Graph Database to be on the Operational DBMS Magic Quadrant 2013.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Jill’s strength as a negotiator in both ideas and contracts proved essential. She was able to obtain a full working office gratis for a year, as well as being a critical element in negotiating contracts with attorneys, employees, support staff, investors and clients. Her efforts have enabled OrientDB to remain financially independent.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I remember the first time, a Fortune10 company contacted us to consider OrientDB in a challenge where they would be selecting the best Graph Database among 3 products. We were David against 2 Multi-Million Goliaths of the DBMS industry. We won that deal thanks to the Jill’s strategy and leadership. That was just the first of the many big battles to be won against our competitors. Jill was a critical piece in all of those victories.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">There are many other challenges and achievements where Jill’s involvement was the key to greater success. Giving credit where credit is due, Thank You, Jill. </span><span style="font-family: Arial; font-size: 14.6667px; line-height: 1.38; white-space: pre-wrap;"> Without you, I couldn't have taken the company to the next level, where it was possible to attract great talent to join the team. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<span style="font-family: Arial; font-size: 14.6667px; vertical-align: baseline; white-space: pre-wrap;">This post is to say thank you to my co-founder and my best friend Jill for these 3 intense and wonderful years :-)</span><br />
<span style="font-family: Arial; font-size: 14.6667px; vertical-align: baseline; white-space: pre-wrap;"><br /></span>
<span style="font-family: Arial; font-size: 14.6667px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0Londra, Regno Unito51.5073509 -0.1277582999999822351.1912379 -0.77320529999998222 51.8234639 0.51768870000001777tag:blogger.com,1999:blog-13838184.post-26821421789615740482015-06-24T17:47:00.000+02:002015-07-26T22:12:25.401+02:005 Wonderful Years on Github -- Thanks to the Community!<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Yesterday was the </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">5th anniversary of my GitHub account</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. 5 awesome years working with </span><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">talented and passionate people</span><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to make </span><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">OrientDB a better product</span><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. During this time, I received 1000’s of comments, commits and pull requests. To give you an idea, just on the core </span><a href="https://github.com/orientechnologies/orientdb" style="text-decoration: none;"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">OrientDB</span></a><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> project, we’ve had </span><a href="https://github.com/orientechnologies/orientdb/commits/develop" style="text-decoration: none;"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">10,197 commits</span></a><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://github.com/orientechnologies/orientdb/releases" style="text-decoration: none;"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">42 releases</span></a><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and </span><a href="https://github.com/orientechnologies/orientdb/graphs/contributors" style="text-decoration: none;"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">80 contributors</span></a><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. If we add all the other projects under the </span><a href="https://github.com/orientechnologies" style="text-decoration: none;"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Orient Technologies</span></a><span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> management, we have way more than 100 contributors and 15,000 commits.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b id="docs-internal-guid-4e95173d-263e-e8be-cadd-9d554210558a" style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Thanks to everybody for your time and the passion you bring to improving OrientDB. I appreciate each and every contribution. I always tried to give visibility to the great work from contributors. (For example, most of the core development and consulting team was hired directly from the community.) Let me know if I can do more.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Unfortunately, sometimes I had to make decisions for the long term future of the product that weren’t welcomed by all of you. I apologize if I hurt someone's feelings but there are multiple voices to consider and not all the advice could be accepted.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A few days ago, a “disgruntled” anonymous user and advocate of a competing product created multiple brand-new accounts on GitHub/Twitter/HackerNews/etc. He seems to be on a mission to spread his negative feelings about OrientDB and me personally retweeting his blog to happy OrientDB users and to the world. This is very unfortunate. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">With more than 50,000 downloads a month, I accept that having 100% of satisfied users </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">is impossible</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. That said, rest assured that I’ve read his suggestions and am taking his feedback seriously and in a constructive way to make OrientDB even better. Stability and performance are our priority and our code contributions are going in that direction. We have 2,869 test cases in our product and we’re adding more daily. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Since OrientDB is new technology, we encourage all clients to work directly with the OrientDB team. If clients prefer to pay for consulting services outside of the OrientDB team (for assistance with data modeling, query performance tuning, POC building, etc) it’s important that they work with a certified OrientDB consultant to ensure they have the training/knowledge required. Also, it’s important that they look at the project design as a whole from the beginning instead of trying to fix pieces of an implementation after the deadline has been reached. Coming from the RDBMS world can be tricky, because you have to adopt a new way of thinking and working. However, our experience has been, once you understand how OrientDB works, you won’t want to go back to the old ways of managing data.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Do I think that OrientDB is perfect?</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Absolutely not. I’ve spent my entire life building this product. Everyone involved with the project works hard to improve it every day. We accept there are bugs to fix and stuff to improve, however we’re also encouraged by the feedback of 1,000’s of happy users and 100’s of paying customers.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Do I think OrientDB is the best thing happening in the DBMS industry in the last 40 years? </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Absolutely YES.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Everyone’s free to chose the database deemed appropriate for their use cases. I respect the right of people to do that and I’m happy to hear all constructive feedback. However, we don’t allow disrespectful language or offensive remarks, as this does not contribute to creating great software.</span><span style="background-color: white; font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;"><b> </b></span><span style="background-color: white; font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;">In my 5 years on GitHub, I've only blocked one user/one conversation (deleting one comment only) - and it was for this reason.</span></span></div>
</div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Going forward, please submit your feedback regarding the product within Github or in the community forum. I will address this topic exclusively with my code contributions and by providing outstanding support to customers. If you want to talk to me about how OrientDB can be improved or get some help on your next project, I’d be really happy to help. Please drop an email to l-dot-garulli-- at --orientdb-dot-com, or write to the info -at--- orientdb.com if you want to involve the company.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br />
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">Lvc@</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
</div>
Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com1tag:blogger.com,1999:blog-13838184.post-70398119989447943842014-11-03T15:16:00.000+01:002014-11-03T15:16:02.208+01:00GraphDB Communities comparison<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: white;">This post is an update to my last post related to </span><a href="http://zion-city.blogspot.it/2012/05/graphdb-market-share.html" style="background-color: white; color: #1155cc;" target="_blank">GraphDB marketshare</a><span style="background-color: white;"> (posted more than 2 years ago.) After 2 years, how have the GraphDB Communities changed? Twi</span><span style="line-height: 16px;">tter followers, reviews, etc can be bought/falsified.</span></span></div>
<span style="background-color: white; font-family: tahoma, sans-serif; font-size: x-small;"><br /></span>
<br />
<div style="background-color: white; color: #222222;">
<span style="font-family: Arial, Helvetica, sans-serif;">But with an Open Source project, with open communities, I found a metric that is very hard to cheat: <b>participation in groups</b>. Then I discovered that Google Groups already provides this metric.</span></div>
<div style="background-color: white; color: #222222;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<br />
<div style="background-color: white; color: #222222;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="im" style="color: #500050;"></span></span></div>
<br />
<div style="-webkit-text-stroke-width: 0px; background-color: white; color: #222222; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin: 0px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;">Below find the Neo4j and OrientDB charts.</span></div>
<div style="-webkit-text-stroke-width: 0px; background-color: white; color: #222222; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin: 0px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Neo4j</b> </span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-9j5_8dTIQRr-_t8UhwowAEiV_73GTr-xwRbZdlEUxm4H7J3qtZpzo_-kDlE42VNm7L4w3SRweemiuDdvw4EJavtRo638ILhCT11LINEcsp5bPhT1r5xgPkVwZfJrrgRJCdFw/s1600/stats-neo4j.png" height="219" width="640" /><span id="goog_70206027"></span><span id="goog_70206028"></span><a href="https://www.blogger.com/"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">Source: <a href="https://groups.google.com/forum/#!aboutgroup/neo4j">https://groups.google.com/forum/#!aboutgroup/neo4j</a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<b><span style="font-family: Arial, Helvetica, sans-serif;">OrientDB</span></b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjItiAgDkJdvQMey5oW5qu9hAxQ88Yt3pR9kzhVoXIcerJdb7KpIsiagdjcBRFnx8Bo-mpzm3rAI3E0uwmkANf5n89JsWChBcFupq1Dp_8ZEMjkDFSII6KIrr7-AfSBx8jEuwlB/s1600/stats-orientdb.png" height="212" width="640" /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">Source: <a href="https://groups.google.com/forum/#!aboutgroup/orient-database">https://groups.google.com/forum/#!aboutgroup/orient-database</a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgolGbakVYAJ63oI3oahgziov0tBxUz-qpMfDvMJPP60qvQAEwBetAypN7jGALmNdfU2xcB62QWSEaz0_YiHqksxD89Zt0Vi7QVdH2DwUYbGhr7PWQbCExY24nBT4TJe2XCMCxq/s1600/stats-arangodb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br class="Apple-interchange-newline" /></a></div>
<div style="margin-left: 1em; margin-right: 1em; text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">It's very cool to see that not only is the OrientDB community very active on Groups, noting that OrientDB also has other channels (Chat, StackOverflow, etc.), but OrientDB is actually more active than Neo4j. In the past month, October 2014, OrientDB had <b>472</b> posts compared to <b>351</b> posts on Neo4j.</span></div>
</div>
</div>
Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com1tag:blogger.com,1999:blog-13838184.post-55120813010566540192013-09-23T10:09:00.002+02:002013-09-23T10:09:44.741+02:00New Neo4J marketing campaign<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Trebuchet MS, sans-serif;">This morning I've read a <a href="https://twitter.com/emileifrem/status/381945578973716480">tweet</a> by <a href="https://twitter.com/emileifrem">Emil Eifrem</a>, CEO of <a href="http://www.neotechnology.com/">Neo Technology</a> (the company behind Neo4J product).</span><br />
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span>
<span style="font-family: Trebuchet MS, sans-serif;">Do they really had to spend the <a href="http://www.neotechnology.com/neo-technology-raises-11-million-in-series-b-funding-to-lead-adoption-of-graph-databases/">$ 10.6 Million of dollars received in funding</a> in this marketing operation?</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdgnezRg8YBZZWPM3hBqwdV0gZiUJQuWWcI8xcYsSL6pY3-5ITjhBDOGRzjLg8CsIkZPcM2K1KCv2Mhyi9LoSM-llDIwpTIHmO7d1hAnwTwoaBcDTaud2GRibKnu24bQCADdbf/s1600/Neo4J_marketing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdgnezRg8YBZZWPM3hBqwdV0gZiUJQuWWcI8xcYsSL6pY3-5ITjhBDOGRzjLg8CsIkZPcM2K1KCv2Mhyi9LoSM-llDIwpTIHmO7d1hAnwTwoaBcDTaud2GRibKnu24bQCADdbf/s1600/Neo4J_marketing.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
<span style="font-family: Trebuchet MS, sans-serif;">If Open Source <a href="http://www.orientdb.org/">OrientDB</a> wasn't SUPERIOR (faster, smarter and more complete) to the OVERPRICED <a href="http://www.neo4j.org/">Neo4j</a>, <a href="http://www.neo4j.org/">Neo4j</a> wouldn't be so obsessed with campaigning against it.</span></div>
<div style="text-align: left;">
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Trebuchet MS, sans-serif;"><span style="background-color: white; color: #333333; line-height: 20px;">To remain in the telco field </span><a class="twitter-hashtag pretty-link" href="https://twitter.com/search?q=%23Neo4J" style="background-color: white; color: #0099cc; line-height: 20px; text-decoration: none !important;"><span style="color: #66c1e0;">#</span>Neo4J</a><span style="background-color: white; color: #333333; line-height: 20px;"> is like </span><a class="twitter-hashtag pretty-link" href="https://twitter.com/search?q=%23Nokia" style="background-color: white; color: #0099cc; line-height: 20px; text-decoration: none !important;"><span style="color: #66c1e0;">#</span>Nokia</a><span style="background-color: white; color: #333333; line-height: 20px;">: leader for a while but didn't innovate. And then came </span><a class="twitter-hashtag pretty-link" href="https://twitter.com/search?q=%23OrientDB" style="background-color: white; color: #0099cc; line-height: 20px; text-decoration: none !important;"><span style="color: #66c1e0;">#</span>OrientDB</a><span style="background-color: white; color: #333333; line-height: 20px;">...</span></span></div>
<div style="text-align: left;">
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Trebuchet MS, sans-serif;">Source: <a href="https://twitter.com/emileifrem/status/381945578973716480">https://twitter.com/emileifrem/status/381945578973716480</a></span></div>
<br /></div>
Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com2tag:blogger.com,1999:blog-13838184.post-77163567246932277842013-08-02T23:17:00.000+02:002013-08-02T23:17:46.410+02:00The popularity of OrientDB grows up so fast!<div dir="ltr" style="text-align: left;" trbidi="on">
Sometimes I check the site <a href="http://db-engines.com/en/ranking/graph+dbms">DB-Engines.com</a> with the ranking of DBMS products in popularity (this is the <a href="http://db-engines.com/en/ranking_definition">method</a> they use). I'm not surprised to see <a href="http://www.orientdb.org/">OrientDB</a> at the second position in Graph Database market right after <a href="http://www.neo4j.org/">Neo4J</a>. <a href="http://www.neo4j.org/">Neo4J</a> has a score of 9.73 against <a href="http://www.orientdb.org/">OrientDB</a> with "only" 0.92.<br />
<br />
But the most interesting thing is the grow up factor: <a href="http://www.orientdb.org/">OrientDB</a> is at +22,8% while <a href="http://www.neo4j.org/">Neo4J</a> is at "only" +8,3. So can <a href="http://www.orientdb.org/">OrientDB</a> surpass <a href="http://www.neo4j.org/">Neo4J</a> in terms of popularity? What are the pros and cons of <a href="http://www.orientdb.org/">OrientDB</a> against <a href="http://www.neo4j.org/">Neo4J</a>? Any comments is welcome, also in private.<br />
<br /></div>
Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-15645600029680026662012-11-01T17:20:00.003+01:002012-11-01T18:56:49.347+01:00OrientDB: huge improvement in performance (+9,000%) in many use cases. Thanks RaspberryPi !<br />
<br />
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
Hi all,</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
today I've a good story to tell you. A couple of days ago <a href="https://twitter.com/fabriziofortino" target="_blank">Fabrizio Fortino</a> sent to me an email with some metrics and screenshots about the profiling of an in-production instance of <a href="http://www.orientdb.org/" target="_blank">OrientDB</a>. Well, a lot of time was spent on open/close of database. </div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
That was the issue 1145 (<a href="http://code.google.com/p/orient/issues/detail?id=1145" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank">http://code.google.com/p/<wbr></wbr>orient/issues/detail?id=1145</a>) but I assigned to it a low priority because it was an improvement, not a real bug...</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="color: #222222; font-family: Arial, Helvetica, sans-serif;">Well today I'm hacking with a </span><a href="http://www.raspberrypi.org/" style="color: #222222; font-family: Arial, Helvetica, sans-serif;" target="_blank">Raspberry PI</a><span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"> cheap </span><span style="color: #222222; font-family: Arial, Helvetica, sans-serif;">HW</span><span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"> and </span><a href="http://www.orientdb.org/" style="color: #222222; font-family: Arial, Helvetica, sans-serif;" target="_blank">OrientDB</a><span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"> to see if it could be used in production for some limited use cases. Well on this kind of </span><span style="color: #222222; font-family: Arial, Helvetica, sans-serif;">HW</span><span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"> everything is much-much slower! "Yeah, it's normal: I have a $35 HW, Java is not so optimized yet on this ARM platform, etc.". This were my firsts thoughts about the initial results.</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
But after some profiling I was arrived at the same conclusion of Fabrizio, so I decided to spend 2 hours of my life to investigate in deep.</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
Well, I've just committed a small patch (<b>r7134</b>) that avoids to open a database every time a database is re-used from the pool. In facts this is a quite costly operation, specially if you do many small atomic operation where most of the cost is in open/close that in the operation itself!</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
This fix improved a lot these scenarios:</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<ul>
<li style="line-height: 17px;">Usage via <b>HTTP/Rest</b>, because a new connection is acquired every time from the pool at every operation</li>
</ul>
<ul>
<li style="line-height: 17px;">Java Web Applications where at the server side you used the <b>database pool</b></li>
</ul>
<ul>
<li style="line-height: 17px;">you wrote a Java App that every time creates a new instance of a database. if this is your case I strongly encourage using the database pool that at this time is much faster</li>
</ul>
<ol>
<li style="line-height: 17px;">in case metadata changes (schema, security, functions) you would need to invoke a reload() to get the changes</li>
</ol>
</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
The improvement will be minor in the cases:</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
All these are PROS, what about CONS?</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
This is a simple load of a tiny document against a database on my pc:</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
$ ab -n1000 -A admin:admin -k -c10 <a href="http://localhost:2480/document/demo/71:1" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank">http://localhost:2480/<wbr></wbr>document/demo/71:1</a></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
...</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<b>Requests per second: 52.56 [#/sec] (mean)</b></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<now></now></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
$ ab -n1000 -A admin:admin -k -c10 <a href="http://localhost:2480/document/demo/71:1" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank">http://localhost:2480/<wbr></wbr>document/demo/71:1</a></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
...</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<b>Requests per second: 4694.57 [#/sec] (mean)</b></div>
<br />
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
This is 90x faster, namely 9,000%, namely a huge improvement!<br />
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
Now it's funny that <a href="http://www.orientdb.org/" style="background-color: transparent;" target="_blank">OrientDB</a> on the <a href="http://www.raspberrypi.org/" target="_blank">Raspberry PI</a>, with the new patch, runs at a speed quite close to my PC I used everyday to work before this patch!</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com12tag:blogger.com,1999:blog-13838184.post-27187924541549704222012-05-05T02:22:00.000+02:002012-05-18T08:00:50.965+02:00GraphDB market share<div>
<span style="font-family: Arial, Helvetica, sans-serif;">Last week a market analysis agency contacted me to ask some questions about <a href="http://www.orientdb.org/" target="_blank">OrientDB</a> saying that <a href="http://www.orientdb.org/" target="_blank">OrientDB</a>, following its research, has the second position in the worldwide GraphDB market right after <a href="http://neo4j.org/" target="_blank">Neo4J</a>. Awesome!</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><i><b>But who are the main players of the GraphDB market?</b></i></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; text-align: left;">Since each vendor claims, more or less, to be the market leader, what is the real user base? Seems quite hard to gather real data about users and customers directly from vendors.</span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">So I though that one of the best way is to look into the public groups and forums because users, before or after, will subscribe on it because it's the first hand source of information, help and tricks. They can't lie! This document contains some metrics extracted from public sources. Click on the source to see with your eyes about the source I used.</span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">By reading this data <a href="http://neo4j.org/" style="text-align: -webkit-auto;" target="_blank">Neo4J</a> is, without any doubts, the GraphDB market leader, followed by <a href="http://www.orientdb.org/" style="text-align: -webkit-auto;" target="_blank">OrientDB</a> in rapid grow and after a long distance <a href="http://www.infinitegraph.com/" target="_blank">InfiniteGraph</a> and
<a href="http://www.sparsity-technologies.com/dex" style="text-align: -webkit-auto;" target="_blank">DEX</a>. By reading the web site
<a href="http://www.infinitegraph.com/" target="_blank">InfiniteGraph</a> seems to have some real customers, but seems all related to the previous product <a href="http://www.objectivity.com/" target="_blank">ObjectivityDB</a> (an ODBMS born more than a decade ago).</span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Below the metrics:</span></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br />
<table border="1" cellpadding="0" cellspacing="0" dir="ltr" id="tblMain" style="width: 100%;"><tbody>
<tr dir="ltr"><td><span style="font-family: Arial, Helvetica, sans-serif;"><b>Products</b></span></td><td class="s1" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://neo4j.org/" target="_blank"><b>Neo4J</b></a></span></div>
</td><td class="s1" dir="ltr"><div style="text-align: center;">
<b><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.orientdb.org/" target="_blank">OrientDB</a>
</span></b></div>
</td><td class="s1" dir="ltr"><div style="text-align: center;">
<b><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.infinitegraph.com/" style="text-align: left;" target="_blank">InfiniteGraph</a>
</span></b></div>
</td><td class="s1" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.sparsity-technologies.com/dex" target="_blank"><b>DEX</b></a></span></div>
</td></tr>
<tr dir="ltr"><td class="s2" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">Updated on</span></td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">05/05/2012</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">05/05/2012</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">05/05/2012</span></div>
</td><td class="s4" style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;">05/05/2012 </span></td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">Source</span></td><td class="s7" dir="ltr"><div style="text-align: center;">
<a href="http://groups.google.com/group/neo4j/about" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Google Group</span></a></div>
</td><td class="s7" dir="ltr"><div style="text-align: center;">
<a href="http://groups.google.com/group/orient-database/about" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Google Group</span></a></div>
</td><td class="s7" dir="ltr"><div style="text-align: center;">
<a href="http://groups.google.com/group/infinitegraph/about" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Google Group</span></a></div>
</td><td class="s7" dir="ltr"><div style="text-align: center;">
<a href="http://sparsity-technologies.com/dextechsupport/" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Support Forum</span></a></div>
</td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">created on</span></td><td class="s8" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">April 2011</span></div>
</td><td class="s8" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">April 2010</span></div>
</td><td class="s8" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">September 2011</span></div>
</td><td class="s8" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">May 2011</span></div>
</td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">members</span></td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">926</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">620</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">75</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">?</span></div>
</td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">threads since the beginning</span></td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">1,240</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">1,449</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">36</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">33</span></div>
</td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">posts since the beginning</span></td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">6,752</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">7,918</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">233</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">87</span></div>
</td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">posts in the last month (April 2012)</span></td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">1,107</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">439</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">19</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">0</span></div>
</td></tr>
<tr dir="ltr"><td class="s6" dir="ltr"><span style="font-family: Arial, Helvetica, sans-serif;">posts 2 months ago (March 2012)</span></td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">1,310</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">519</span></div>
</td><td class="s3"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">13</span></div>
</td><td class="s8" dir="ltr"><div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">7</span></div>
<div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">but 100% announcements</span></div>
</td></tr>
</tbody></table>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-40697348643200616472012-02-20T13:54:00.003+01:002012-02-20T13:54:18.412+01:00Why I hate MavenYes, I admin that <a href="http://maven.apache.org/">Maven</a> has improved the development of Java programmers because the tons of dependencies each project brings.<br />
<br />
So why I hate it so much? Well, because the thousands (really thousands!) of network calls to the remote server to:<br />
<br />
<ul>
<li>check versions</li>
<li>check md5</li>
<li>download pom.xml files</li>
<li>download jars</li>
</ul>
<br />
But why Maven has been realized in the way we know? All the logic is at client side. This means that each Maven user pays the absurd latency cost for <b>each</b> network calls! The solution? Git teaches.<br />
<br />
Why don't build a tree of requested JARs, send it to the Maven server and download the resulting zipped archive containing all the stuff to install in one shot?<br />
<br />
In this way updates daily updates would take ms or just some seconds depending by the updates and the network bandwidth, not any more by the network latency.<br />
<br />Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com7tag:blogger.com,1999:blog-13838184.post-40325997924629184302011-04-28T11:54:00.014+02:002011-04-28T21:25:19.951+02:00GraphDB benchmark part II<div>After some months since my last post about <a href="http://www.orientechnologies.com/">OrientDB</a> (sorry but I prefer <a href="http://twitter.com/#!/lgarulli">micro-blogging</a> than blogging...) I'm back to write some news about the <a href="http://www.orientechnologies.com/">OrientDB</a> engine.</div><div><br /></div><div>The hard work has been the optimization at many levels:</div><div><ul><li>minimize the wasted space created by set/delete operations (HOLES)</li><li>minimize marshalling/unmarshalling operations, specially on LinkSet type responsible of relationships between vertices and edges</li><li>fine tuning of Transactions</li></ul><div>The main difficulty has been reduce the Disk I/O when you update a record. In facts when you execute an update, rarely the serialized content size will be the same of the original size. In this case you've a new HOLE, namely a free space marked to being reused.</div></div><div><br /></div><div>The problems I found with the HOLES were that small spaces aren't reused at all and huge defragmentation was present. This caused a global slowness and the growth of the database on disk (in some cases many times the original size). After 2 weeks of work I've published in the SVN and maven the new version of the <a href="http://www.orientechnologies.com/">OrientDB</a> storage with:</div><div><ul><li><b>In-line defrag</b>: something like some File Systems already do by joining small holes all together. In-line defrag works while the database is online and in use</li><li>Improved the management of <b>small changes to records</b></li><li>2 <b>configurable strategies</b> of how to find the best hole to join during defrag process</li><li><b>configurable hole distance</b> to decide when to join multiple holes all together</li></ul><div>The gain of overall speed has been perceived by a lot of users. Since there are not benchmarks against GraphDB yet I've re-run the <a href="https://github.com/tinkerpop/blueprints/wiki/">TinkerPop Blueprints</a> Test Cases (see my <a href="http://zion-city.blogspot.com/2010/09/orientdb-fastest-graphdb-available.html">previous post about this</a>).</div><div><br /></div><div>This test suite is part of <a href="https://github.com/tinkerpop/blueprints/wiki/">TinkerPop Blueprints</a> project and is <b>NOT a BENCHMARK</b>, but just a lot of tests against GraphDB implementations to test the compliance level of them. So please don't flame about this. It's not an official benchmark, just a way to test how <a href="http://www.orientechnologies.com/">OrientDB</a> performs in comparison with other GraphDBs and with the previous releases of the same <a href="http://www.orientechnologies.com/">OrientDB</a>. More how OrientDB performs on different platforms. The comparison in this case is only with Neo4J (the market leader?) since DEX supports only few Test Cases and it wouldn't be fair. Note that both GraphDBs run with default settings.</div><div><br /></div><div>These are the results on a cheap Linux server (Linux CentOS, Intel Atom Dual Core 330 1,6Ghz, 1GB Ram DDR2, HD U-ATA 7200rpm):</div></div><div><br /></div><div style="text-align: center;"><table frame="VOID" cellspacing="0" cols="4" rules="NONE" border="0"> <colgroup><col width="199"><col width="190"><col width="86"><col width="127"></colgroup> <tbody> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" rowspan="2" width="199" height="42" align="CENTER"><b>Test name</b></td> <td colspan="3" width="403" align="CENTER"><i>Times in ms. Less is better = faster</i></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#FF950E">OrientDB 1.0rc1 snapshot</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF">Neo4J 1.3</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF">+ faster, - slower</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">VertexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" bg="" sdval="11190,8" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><span>11,190.80</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="48354,85" sdnum="1040;2057;#,##0.00">48,354.85</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="4,32094667047932" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+432,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">EdgeTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="6421,55" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">6,421.55</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="24361,78" sdnum="1040;2057;#,##0.00">24,361.78</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="3,7937538444768" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+379,4%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">GraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="12642,21" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">12,642.21</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="36932,11" sdnum="1040;2057;#,##0.00">36,932.11</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,92133337446538" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+292,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">IndexableGraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1173,55" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,173.55</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="2618" sdnum="1040;2057;#,##0.00">2,618.00</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,23083805547271" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+223,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">IndexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="462,7" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">462.70</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="1052,32" sdnum="1040;2057;#,##0.00">1,052.32</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,27430300410633" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+227,4%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">AutomaticIndexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1719,91" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,719.91</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="4912,81" sdnum="1040;2057;#,##0.00">4,912.81</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,85643434830892" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+285,6%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">TransactionGraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1603,59" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,603.59</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="4237,17" sdnum="1040;2057;#,##0.00">4,237.17</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,6423025835781" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+264,2%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">GraphMLReaderTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1291,93" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,291.93</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="2365,85" sdnum="1040;2057;#,##0.00">2,365.85</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,83125246723894" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+183,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT"><b>Total</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="36506,24" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><b>36,506.24</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="124834,89" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><b>124,834.89</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="3,41954937018986" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%"><b>+342,0%</b></td> </tr> </tbody></table></div><div><br /></div><div><a href="http://www.orientechnologies.com/">OrientDB</a> completes all the tests in less than a third of the time of Neo4J: <b>+342%</b> faster than Neo4J!</div><div><br /></div><div>The difference is lower running the same test against a MacBook Pro (OS X 10.6.7 64bit, 4GB Ram, CPU Intel core 2 duo 2.4ghz, HD 5400rpm):</div><div><br /></div><div><table frame="VOID" cellspacing="0" cols="4" rules="NONE" border="0"> <colgroup><col width="199"><col width="190"><col width="86"><col width="127"></colgroup> <tbody> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" rowspan="2" width="199" height="41" align="CENTER"><b>Test name</b></td> <td colspan="3" width="403" align="CENTER"><i>Times in ms. Less is better = faster</i></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#FF950E">OrientDB 1.0rc1 snapshot</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF">Neo4J 1.3</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF">+ faster, - slower</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">VertexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bg="" sdval="13380,67" bgcolor="#FF950E" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><span>13,380.67</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="23647,54" sdnum="1040;2057;#,##0.00">23,647.54</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,7672911745077" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+176,7%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">EdgeTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="7508,78" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">7,508.78</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="14139,71" sdnum="1040;2057;#,##0.00">14,139.71</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,88309019574418" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+188,3%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">GraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="9514,58" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">9,514.58</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="18664,99" sdnum="1040;2057;#,##0.00">18,664.99</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,96172505775347" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+196,2%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">IndexableGraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="523,92" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">523.92</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="969,06" sdnum="1040;2057;#,##0.00">969.06</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,84963353183692" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+185,0%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">IndexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="263,58" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">263.58</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="640,8" sdnum="1040;2057;#,##0.00">640.80</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,43114045071705" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+243,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">AutomaticIndexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1672,92" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,672.92</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="2943,86" sdnum="1040;2057;#,##0.00">2,943.86</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,75971355474261" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+176,0%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">TransactionGraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1378,59" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,378.59</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="3047,77" sdnum="1040;2057;#,##0.00">3,047.77</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="2,21078783394628" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+221,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">GraphMLReaderTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1418,21" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,418.21</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="1805,27" sdnum="1040;2057;#,##0.00">1,805.27</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,27292149963687" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+127,3%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT"><b>Total</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="35661,25" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><b>35,661.25</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="65859" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><b>65,859.00</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="1,84679448981738" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%"><b>+184,7%</b></td> </tr> </tbody></table></div><div><br /></div><div>In this case <a href="http://www.orientechnologies.com/">OrientDB</a> completes all the tests in about half time: <b>+184,7%</b> faster than Neo4J. I was not able to complete all the tests on Windows 7 machine (Intel i7 720q, 4GB Ram, HD 7200rpm) since Neo4J gives errors and break the test suite:</div><div><br /></div><div><table frame="VOID" cellspacing="0" cols="4" rules="NONE" border="0"> <colgroup><col width="199"><col width="190"><col width="86"><col width="127"></colgroup> <tbody> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" rowspan="2" width="199" height="41" align="CENTER"><b>Test name</b></td> <td colspan="3" width="403" align="CENTER"><i>Times in ms. Less is better = faster</i></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#FF950E">OrientDB 1.0rc1 snapshot</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF">Neo4J 1.3</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF">+ faster, - slower</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">VertexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bg="" sdval="7762,61" bgcolor="#FF950E" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><span>7,762.61</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="51474,76" sdnum="1040;2057;#,##0.00">51,474.76</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="6,63111505022151" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+663,1%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">EdgeTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="6737,59" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">6,737.59</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="71479,28" sdnum="1040;2057;#,##0.00">71,479.28</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="10,6090278571418" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+1.060,9%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">GraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="7280,43" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">7,280.43</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="75695,77" sdnum="1040;2057;#,##0.00">75,695.77</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="10,3971564866361" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">+1.039,7%</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">IndexableGraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="2766,07" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">2,766.07</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bg="" sdnum="1040;2057;#,##0.00"><span>Error</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">n.a.</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">IndexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="1064,49" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">1,064.49</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bg="" sdnum="1040;2057;#,##0.00"><span>Error</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">n.a.</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">AutomaticIndexTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="2796,08" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">2,796.08</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bg="" sdnum="1040;2057;#,##0.00"><span>Error</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">n.a.</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">TransactionGraphTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="3471,8" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">3,471.80</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bg="" sdnum="1040;2057;#,##0.00"><span>Error</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">n.a.</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT">GraphMLReaderTestSuite</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="3067,81" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00">3,067.81</td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bg="" sdnum="1040;2057;#,##0.00"><span>Error</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%">n.a.</td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="20" align="LEFT"><b>Total</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FF950E" sdval="34946,88" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><b>34,946.88</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#E6E6FF" sdval="198649,81" sdnum="1040;2057;#,##0.00;[RED]-#,##0.00"><b>198,649.81</b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" bgcolor="#E6E6FF" sdval="9,21243313133313" sdnum="1040;0;"+"#.##0,0%;[RED]-#.##0,0%"><b>+921,2%</b></td> </tr> </tbody></table></div><div><br /></div><div>However by looking at the 3 available tests <a href="http://www.orientechnologies.com/">OrientDB</a> outperforms Neo4J also on Windows machines of <b>+921,2%</b>!</div><div><br /></div><div>Another interesting point is about the platforms. Linux CentOS performs very well even if the underlying HW is cheaper & older than the other 2 machines.</div><div><br /></div><div>I'm pretty satisfied of these results in relation to the previous ones where Neo4J performed better in some circumstances. Thank you to all the <a href="http://www.orientechnologies.com/">OrientDB</a> contributors and users that have made this possible! </div><div><br /></div><div>It's not time to rest or sleep, because the work is not yet ended: all the efforts now are for the 1.0 release.</div><div><br /></div><div><b><span class="Apple-style-span">How to execute these test on my PC?</span></b></div><div><br /></div><div>To re-execute the same test on your machine just install <a href="http://www.java.com/en/">Java 6</a>, <a href="http://git-scm.com/">Git</a> and <a href="http://maven.apache.org/">Apache Maven</a>. Then execute these command in a shell (or command prompt if you've MS Windows):</div><div><br /></div><div>> git clone git://github.com/tinkerpop/blueprints.git</div><div>> cd blueprints</div><div>> mvn install</div><div><br /></div><div>Now wait that all the software is compiled and all the tests start. Now you've your results. Please share them to the <a href="https://groups.google.com/forum/#!forum/orient-database">OrientDB Group</a> attaching your HW/SW configuration!</div><div><br /></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com2tag:blogger.com,1999:blog-13838184.post-84769562291263291272010-11-23T12:05:00.010+01:002010-11-23T12:15:30.052+01:00Codemotion 2011, the most important Italian conference about programming<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.codemotion.it/sites/codemotion.it/files/image/codemotion_468_60.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 468px; height: 60px;" src="http://www.codemotion.it/sites/codemotion.it/files/image/codemotion_468_60.gif" border="0" alt="" /></a><br /><span><h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; "><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: 13px; font-weight: normal; line-height: 19px;"></span></span></h3><span><span></span></span><span><span><br />Save this date: March 5th 2011! In Rome, Italy there will be the most important conference about programming. The event is totally <b>FREE</b>. About 1,500 attendees. Sessions in English and Italian languages.<br /><br /></span></span></span><div><span><span><span>For information: <a href="http://www.codemotion.it/">http://www.codemotion.it</a></span></span><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(82, 82, 77); line-height: 19px; "><br /></p></span></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-71717859490958441582010-10-19T15:26:00.001+02:002010-10-19T15:26:55.277+02:00When someone is criticizing something you care...<span class="Apple-style-span" style="font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; color: rgb(68, 68, 68); line-height: 19px; ">When someone is criticizing something you care, don't defend it till death, but ask him what's his idea to improve it! Both will growth. Lvc@</span>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com4tag:blogger.com,1999:blog-13838184.post-70763628767221378562010-10-14T20:12:00.007+02:002010-10-14T20:58:02.562+02:00A standard for GraphDB<div>Yesterday GraphDBs have covered a niche market. In the last period things are changed and they are becoming much more popular than ever. This is due to:</div><div><ul><li>The always growing need to have data <b>strongly interconnected</b>. What better than a GraphDB for it?</li><li>Applications are much more "<b>social</b>" than before. And social means relationships among subjects that perfectly bound to the Graph model</li><li><b>Performance </b>on large datasets. You can live without a pure GraphDB, and therefore continue to use a Relational DBMS, until you need a real fast access to your data</li><li>The <b>NoSQL</b> movement has contributed a lot to change the mind of developers to focus to DBMS different (and sometime very different) from the Relational model.</li></ul><div><span class="Apple-style-span" style="font-size: 13px; font-family: arial, sans-serif; "><p style="max-width: 65em; "></p></span></div></div><span><span>The GraphDB has few but strong concepts. Graphs are composed by:</span></span><div><ul><li><b>Vertex </b>or Node, the linked entity. Vertexes can have properties.</li><li><b>Edge </b>or Arc, as the link between the Vertexes. Edges can have properties and can be unidirectional or bidirectional</li><li><b>Property</b>, is a value to assign to Vertexes and Edges. A property has a name and a value</li></ul><span><span><div><span><span>Each GraphDB product is based upon the above concepts, but features can be very different among them. Furthermore there isn't a standard for them and an application can't migrate from one to another one at zero or low cost.</span></span></div><div><span><span><br /></span></span></div><div><span><span>This is the reason why I want to introduce the </span></span><a href="http://github.com/tinkerpop/blueprints/wiki"><b>Tinkerpop Blueprints</b></a>. This Open Source project aims to have a shared set of basic interfaces to abstract the concepts of Graph, Vertex, Edge and Property. In this way applications can easily migrate to another available implementation of the specification. </div><div><br /></div><div>Furthermore <a href="http://www.tinkerpop.com/"><b>Tinkerpop</b></a><b> </b>has created a complete stack of tools and framework to work with Graphs. Below the main ones:</div><span><span><ul><li><a href="http://wiki.github.com/tinkerpop/gremlin"><b>Gremlin</b></a><b> </b>is a Turing-complete, graph-based programming language designed for key/value-pair multi-relational graphs. Gremlin makes use of an XPath-like syntax to support complex graph traversals. This language has application in the areas of graph query, analysis, and manipulation.</li><li><b><a href="http://rexster.tinkerpop.com/">Rexster</a> </b>is a RESTful graph shell that exposes any Blueprints graph as a standalone server. Extensions support standard traversal goals such as search, score, rank, and, in concert, recommendation. Rexster makes extensive use of Blueprints, Pipes, and Gremlin. In this way its possible to run Rexster over various graph systems.</li><li><b><a href="http://pipes.tinkerpop.com/">Pipes</a> </b>is a graph-based data flow framework for Java 1.6+. A process graph is composed of a set of process vertices connected to one another by a set of communication edges. Pipes supports the splitting, merging, and transformation of data from input to output.</li></ul><div><br /></div><div style="text-align: center;">(1) What do you think about this effort to standardize GraphDB?</div><div style="text-align: center;"><br /></div><div style="text-align: center;">(2) What is missed today in <a href="http://github.com/tinkerpop/blueprints/wiki">Tinkerpop Blueprints</a> API?</div><div style="text-align: center;"><br /></div><div style="text-align: center;">(3) Does a .NET porting make sense?</div><div style="text-align: center;"><br /></div></span></span><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "></span></div></span></span><div></div></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com2tag:blogger.com,1999:blog-13838184.post-90053564671019145842010-09-28T22:37:00.008+02:002010-09-28T23:02:03.619+02:00Working on large datasets in OrientDBI was really busy in the last 5 days because I'was working in a huge rewriting of the RB+Tree algorithm that is behind the <a href="http://www.orientechnologies.com">OrientDB</a> index system. All is started some days ago when in the <a href="http://groups.google.com/group/orient-database">OrientDB Group</a> the user <a href="http://groups.google.com/group/orient-database/browse_thread/thread/186c175dd4ac7884/3fb89a572224c011#3fb89a572224c011">Mark Harwood</a> was sharing the first experiences in the import of the entire <a href="http://www.imdb.com/">Internet Movie Data Base (IMDB)</a> inside an OrientDB instance. We're talking about 13 millions of <a href="http://en.wikipedia.org/wiki/Vertex_(graph_theory)">Vertices</a> and about 8 millions of Edges.<br /><br />Well, performance seemed good, specially in comparison with Neo4J, but the insertion time was not-linear and after some millions of records the engine slow down a lot. Furthermore a nasty bug in the management of multiple segments broke the import job after some minutes in his machine while on my PC all went correctly.<br /><br />This is the reason why I stopped the development of the Cluster feature in favor of a strong review of the RB+Tree algorithm. Indexing has been alway fast, but the Mark Harwood's case stressed the engine as no one did until now. The reason is in the import process itself that executes random reads into the index while the RB+Tree seemed optimized for sequential insertion and retrieval.<div><br /></div><div>I'm fixing all the pending issues but first benchmarks show a speed improvement in Indexing between 100% and 800%! Furthermore times now are really linear. Inserting the first millions of Vertices is the same of the last million. This is a big result to the already super-fast OrientDB engine.</div><div><br /></div><div>Once finished the test phase (with new Unit tests, of course) I'll commit all the changes in SVN to be reviewed by the community before the next release.</div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com4tag:blogger.com,1999:blog-13838184.post-44336773240744677682010-09-16T10:21:00.006+02:002010-09-16T12:37:27.362+02:00Started the development of OrientDB clusteringToday is a new day, the day after the official release of OrientDB version 0.9.22. I apologize to all the requesters of the issues planned for this release and not yet finished and postponed to the 0.9.24. What is the reason?<div><br /></div><div><div style="text-align: center;">---> <b><span class="Apple-style-span" style="font-size: x-large;">Replication, Clustering, Fault-Tolerance </span></b><---</div><div><br /></div><div>Seems that the most missed feature in OrientDB is the support for clustering, and therefore<i> high scalability</i>, <i>high availability</i> and <i>high volume of transactions</i> that a single node can't handle. In the last months I studied the whole different architectures of other NoSQL solutions for clustering.</div></div><div><br /></div><div>Today is a new day because I'll start the development of clustering for OrientDB with the following features:</div><div><ul><li><b>Master-Slaves</b> type, where it can be only <b>one Master</b> and <b>N Slaves</b>. If the Master crashes a Slave is elected to be the new Master</li><li><b>IP multicast</b> to discover cluster nodes</li><li>Configuration of nodes using <b>TCP/IP</b>, useful for Clouds that don't allow the IP multicast</li><li>Two sync modes: <b>full </b>where all the database is compressed and sent over the network, and <b>partial </b>by sending only the changes happened since the last sync</li><li>New database handled by the Master OrientDB Server instance to store all the pending records until a configurable <b>threshold</b>. Up this threshold the logs are deleted and the node need a full-sync on startup</li><li>New console commands to <b>display nodes</b>, <b>listen</b> clustering messages and <b>elect </b>the master manually</li></ul><div>The release 0.9.23 is planned for the October 15th, 2010. Stay tuned and contribute with comments, ideas or critiques.</div></div><div><br /></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com4tag:blogger.com,1999:blog-13838184.post-65059140632558179902010-09-15T18:09:00.002+02:002010-09-15T18:19:46.160+02:00Released OrientDB 0.9.22<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><span style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Hi all,</span><div><span style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">many thanks to all the contributors for this new piece of software. A new version of <b>OrientDB </b>has been released after more than 1 month of work (and holidays).</span></div><div><span style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br /></span></div><div><span style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Starting from this version you can use OrientDB as a pure <b>GraphDB </b>using the custom API (</span><a href="http://code.google.com/p/orient/wiki/GraphDatabase" target="_blank" style="color: rgb(20, 125, 186); ">http://code.google.com/p/<wbr>orient/wiki/GraphDatabase</a>), by the <b><a href="http://www.tinkerpop.com">Tinkerpop</a> </b>stack (Blueprints, Gremlin, Pipes, etc.) or again by using the Erlang language with the <b>Cali </b>project (<a href="http://github.com/dmitriid/cali" target="_blank" style="color: rgb(20, 125, 186); ">http://github.com/dmitriid/<wbr>cali</a>).</div><div><br /></div><div><span style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Direct URL to download: <a href="http://orient.googlecode.com/files/orientdb-0.9.22.zip" target="_blank" style="color: rgb(20, 125, 186); ">http://orient.googlecode.<wbr>com/files/orient-database-0.9.<wbr>22.zip</a><br /><br /><div>New features:</div><div>- Issue 21: Full text index against schema fields</div><div>- Issue 91: SQL UPDATE against collections and maps</div><div>- Issue 94: Support for GREMLIN graph language</div><div>- Issue 108: Regular expression support in WHERE clause</div><div>- Issue 109: Support for memory clusters inside regular persistent database</div><div><br /></div><div>Bugs:</div><div>- Issue 86: Cannot insert record from console</div><div>- Issue 87: Cannot query records from OrientDB Studio Command-page</div><div>- Issue 100: Transaction does not work as expected</div><div>- Issue 101: Error in using orient queries having ' character</div><div>- Issue 104: Bulk record creation in cluster with pre-created indices causes ClassCastException</div><div>- Issue 105: Error in using UPDATE query</div><div>- Fixed other minor bugs</div><br />The next release is planned for the end of September 2010 with the first version of Clustering support. Here the details: <a href="http://code.google.com/p/orient/issues/list?q=label:v0.9.23" target="_blank" style="color: rgb(20, 125, 186); ">http://code.google.<wbr>com/p/orient/issues/list?q=<wbr>label:v0.9.23</a><br /><br />To test the OrientDB Studio go here: <a href="http://www.moobilis.com:2480/" target="_blank" style="color: rgb(20, 125, 186); ">http://www.moobilis.com:<wbr>2480</a>. Users: reader/reader and writer/writer. To manage the server: root/root.<br /><br />If you'd like to suggest some new feature for the next releases please open a New Issue as "New feature": <a href="http://code.google.com/p/orient/issues/entry?template=New%20feature" target="_blank" style="color: rgb(20, 125, 186); ">http://code.google.<wbr>com/p/orient/issues/entry?<wbr>template=New%20feature</a><br /></span></div></span>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-57139554569761892792010-09-11T21:45:00.004+02:002010-09-15T18:07:23.517+02:00Erlang interface for OrientDB and micro-benchmark between NoSQL DBMSs<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOESbG3AWxG_wlxBkT4J2w78WtCV7PC1YKcHdmd9_yWDmiL2UdaCEPflCo1U4js3eRFJTLrDAsDEFEMjo5Zwjjq8NgRlrcPeuq7oCs03dOz7iUYKbYegIrY5QcDaFE0rwFLPrJ/s1600/erlang-bench.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOESbG3AWxG_wlxBkT4J2w78WtCV7PC1YKcHdmd9_yWDmiL2UdaCEPflCo1U4js3eRFJTLrDAsDEFEMjo5Zwjjq8NgRlrcPeuq7oCs03dOz7iUYKbYegIrY5QcDaFE0rwFLPrJ/s400/erlang-bench.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5515748043406771570" /></a><div style="text-align: left;"><a href="http://github.com/dmitriid">Dmitrii 'Mamut' Dimandt</a> made a micro benchmark against <a href="http://neo4j.org/">Neo4J</a>, <a href="http://code.google.com/p/redis/">Redis</a>, ThinkerGraph (in memory only) and <a href="http://www.orientechnologies.com/">OrientDB</a> using the erlang language. These are the results:<a href="http://github.com/dmitriid/cali/wiki/Benchmarks-of-sorts">http://github.com/dmitriid/cali/wiki/Benchmarks-of-sorts</a>.</div><div><br /></div><div><a href="http://www.orientechnologies.com/">OrientDB</a> is the fastest implementation (only ThinkerGraph is faster but it's not a DBMS since works only in memory). It's nice to see that <a href="http://www.orientechnologies.com/">OrientDB</a> performance are very close to the in-memory only implementation.</div><div><br /></div><div><br /></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-74351685456115809002010-09-09T15:06:00.016+02:002010-09-15T18:07:38.833+02:00OrientDB the fastest GraphDB available today?Two days ago I've finished the integration of the last part of the <a href="http://github.com/tinkerpop/blueprints">Blueprints</a>: the Index. Now <a href="http://www.orientechnologies.com/">OrientDB</a> can be used as for <a href="http://neo4j.org/">Neo4J</a> with the entire <a href="http://www.tinkerpop.com/">ThinkerPop</a> stack. This include the <a href="http://github.com/tinkerpop/gremlin">Gremlin</a> language as well.<div><br /></div><div>First tests shows that <a href="http://www.orientechnologies.com/">OrientDB</a> outperforms <a href="http://neo4j.org/">Neo4J</a>, the market leader of GraphDB, in all the tests but the iteration (and therefore counting). This is due to the implementation of the Blueprints that need to create a new wrapper object to contain the <a href="http://www.orientechnologies.com/">OrientDB</a>'s OGraphVertex and OGraphEdge objects. I've some ideas to improve it, but I need more time for it. Maybe in the next weeks or earlier if some users need it. However using native <a href="http://www.orientechnologies.com/">OrientDB</a> Graph APIs this overhead is removed.</div><div><br /></div><div>These are the results:</div><div><br /></div><div><table frame="VOID" cellspacing="0" cols="5" rules="NONE" border="0"> <colgroup><col width="183"><col width="328"><col width="96"><col width="59"><col width="116"></colgroup> <tbody> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" rowspan="2" width="183" height="34" align="CENTER"><b><span style="font-size:78%;">Test name</span></b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" rowspan="2" width="328" align="LEFT"><b><span style="font-size:78%;">Description</span></b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" colspan="2" width="154" align="CENTER"><b><span style="font-size:78%;">Time in ms (less is better)</span></b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" width="116" align="CENTER"><b><span style="font-size:78%;">OrientDB vs Neo4J</span></b></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER"><b><span style="font-size:78%;">OrientDB 0.9.22</span></b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER"><b><span style="font-size:78%;">Neo4J</span></b></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER"><b><span style="font-size:78%;">+ faster, - slower</span></b></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testVertexEquality</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1 vertex added and retrieved in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="4,74" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">4.74</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="2,33" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">2.33</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-2,0343347639485" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-203,4%</span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testRemoveVertexNullId</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1000 vertices added in </span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="216,73" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>216.73</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="2070,74" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>2,070.74</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="9,55446869376644" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+955,4%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1000 vertices deleted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1093,71" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>1,093.71</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1910,02" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>1,910.02</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="1,74636786716771" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+174,6%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testVertexIterator</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">5000 vertices added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="476,62" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;">4<b>76.62</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="8314,04" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>8,314.04</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="17,4437497377366" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+1.744,4%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">5000 vertices counted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="86,94" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">86.94</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1,6" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">1.60</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-54,3375" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-5.433,8% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testAddManyVertexProperties</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">750 vertex properties added (with vertices being added too) in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="72,34" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>72.34</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="43437,29" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>43,437.29</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="600,460188001106" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+60.046,0%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testAddEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">6 elements added and checked in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,79" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>0.79</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="30,7" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>30.70</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="38,8607594936709" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+3.886,1%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testAddManyEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">3000 elements added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="2314,44" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>2,314.44</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="8031,12" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>8,031.12</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="3,47000570332348" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+347,0%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1000 edges counted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="8,45" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>8.45</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="12,54" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>12.54</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="1,48402366863905" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+148,4%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">2000 vertices counted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="31,62" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">31.62</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,51" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">0.51</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-62" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-6.200,0% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">2000 vertices checked in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="98,27" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">98.27</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="14,05" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">14.05</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-6,99430604982206" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-699,4% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testGetEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">3 edges retrieved in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,45" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">0.45</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,12" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">0.12</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-3,75" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-375,0%</span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testRemoveManyEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">200 vertices counted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="167,28" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">167.28</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,14" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">0.14</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-1194,85714285714" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-119.485,7% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">100 edges counted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="34,92" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">34.92</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,79" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">0.79</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-44,2025316455696" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-4.420,3%<span class="Apple-style-span" style="font-size:medium;"> *</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">100 edges removed and graph checked in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="20555,44" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">20,555.44</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="332,54" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">332.54</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-61,8134359776268" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-6.181,3%<span class="Apple-style-span" style="font-size:medium;"> *</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testStringRepresentation</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1 graph string representation generated in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,008" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;">0.01</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,005" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;">0.01</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-1,6" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;">100,0%</span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testClear</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">75 elements added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="45,89" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>45.89</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="152,87" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>152.87</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="3,33122684680758" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+333,1%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">75 elements deleted in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="30,76" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>30.76</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="422,05" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>422.05</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="13,7207412223667" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+1.372,1%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testRemovingEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">500 vertices added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="133,62" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>133.62</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="974,37" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>974.37</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="7,29209699146834" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+729,2%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1000 edges added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1130,64" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>1,130.64</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="4521,9" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>4,521.90</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="3,99941625981745" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+399,9%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1000 edges deleted (with size check on each delete) in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="36773,66" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">36,773.66</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="4411,69" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">4,411.69</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-8,33550408120244" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-833,6% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testRemovingVertices</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">500 vertices added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="10,48" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>10.48</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1110,03" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>1,110.03</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="105,918893129771" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+10.591,9%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="CENTER"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">250 edges added in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="132,32" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>132.32</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1089,45" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>1,089.45</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="8,2334492140266" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+823,3%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="CENTER"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">500 vertices deleted (with size check on each delete) in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="70675,74" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">70,675.74</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="2140,07" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">2,140.07</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-33,0249664730593" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-3.302,5% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testTreeConnectivity</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1464 vertices added in a tree structure in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="1506,82" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>1,506.82</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="5832,02" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>5,832.02</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="3,87041584263548" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+387,0%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1464 vertices iterated in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="427,67" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">427.67</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,75" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">0.75</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-570,226666666667" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-57.022,7% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;"><br /></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">1463 edges iterated in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="9,89" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">9.89</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="5,39" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">5.39</span></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="-1,83487940630798" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><span class="Apple-style-span" style="color:#FF0000;">-183,5% <span class="Apple-style-span" style="font-size:medium;">*</span></span></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testTinkerGraphEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">graph-example-1 loaded in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="43,75" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>43.75</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="541,15" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>541.15</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="12,3691428571429" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+1.236,9%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testTinkerGraphVertices</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">graph-example-1 loaded in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="6,81" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>6.81</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="520,29" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>520.29</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="76,4008810572687" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+7.640,1%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testTinkerGraphSoftwareVertices</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">graph-example-1 loaded in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="5,31" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>5.31</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="543,02" sdnum="1040;2057;#,##0.00"><span style="font-size:78%;"><b>543.02</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="102,263653483992" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+10.226,4%</b></span></td> </tr> <tr> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT"><span style="font-size:78%;">testTinkerGraphVertexAndEdges</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT"><span style="font-size:78%;">graph-example-1 loaded in</span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="5,01" sdnum="1040;2057;General"><span style="font-size:78%;"><b>5.01</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="544,17" sdnum="1040;2057;General"><span style="font-size:78%;"><b>544.17</b></span></td> <td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="CENTER" sdval="108,616766467066" sdnum="1040;0;+#.##0,0%;[RED]-#.##0,0%"><span style="font-size:78%;"><b>+10.861,7%</b></span></td> </tr> </tbody></table></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(255, 0, 0); "><span class="Apple-style-span" style="font-size:medium;"><br /></span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(255, 0, 0); "><span class="Apple-style-span" style="font-size:medium;">* </span></span>are the tests with iteration</div><div><br /></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com6tag:blogger.com,1999:blog-13838184.post-1199694242197811992010-08-12T14:07:00.006+02:002010-09-15T18:08:10.652+02:00<div style="text-align: justify;">Yesterday <a href="http://twitter.com/abigdreamer">Mike Tallent</a>, via Twitter, made his congratulations to me for my recent "Db4o community award".</div><br /><div style="text-align: justify;">Is it a joke? The reason seems to reside in the homepage of TevereFlow that claims to support db4o. After some private messages with a db4o guy I explained that TevereFlow supports db4o since it uses DataNucleus as OR-Mapping and it supports db4o. Therefore TevereFlow can run on top of db4o but the support is indirect. All clear.</div><br />But after some days I found my name in the "<span style="font-weight:bold;"><a href="http://developer.db4o.com/Resources/ProfessionalCommunity/db4oMostValuedProfessional/dVPDirectory2010.aspx">DB4O MOST VALUES PROFESSIONAL</a></span>" list:<div><br /><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFhdWYlnYWgFwDeQc29CYkIlqY6aZJWmdU70tiO6X_d3xt6-CemcnhvslhhVNMuJhWe0K_eSnuU-I_xp7LjUgUY0UzwQy5-8FkMmdp5cbsHbtRuACreEC_aWK8DY7jV6gVHbuy/s400/db4o.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 252px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5504498292310857730" /></div><div><br /></div><div><br />Thanks a lot, but I never have written a single line of code for/with db4o!<div style="text-align: justify;"><br /></div><div style="text-align: justify;">Furthermore I'm the author of <a href="http://www.orientechnologies.com/">OrientDB</a>, a competitor of db4o.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">So is it a joke? :-)</div></div></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com3tag:blogger.com,1999:blog-13838184.post-87446588595933173602010-06-12T00:25:00.003+02:002010-06-12T00:37:19.570+02:00Published the Roma presentation for the Open Source Italian Conference in Cagliari, ItalyCheck out this SlideShare Presentation: <div style="width: 425px;" id="__ss_4478788"><strong style="display: block; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/lvca/roma-introduction-and-concepts" title="Roma introduction and concepts">Roma introduction and concepts</a></strong><object id="__sse4478788" height="355" width="425"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=romaintroductionandconcepts-100611170503-phpapp02&stripped_title=roma-introduction-and-concepts"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed name="__sse4478788" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=romaintroductionandconcepts-100611170503-phpapp02&stripped_title=roma-introduction-and-concepts" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"></embed></object><div style="padding: 5px 0pt 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/lvca">Luca Garulli</a>.</div></div>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com1tag:blogger.com,1999:blog-13838184.post-43526345270402614262010-06-11T18:46:00.003+02:002010-09-15T18:07:09.652+02:00Published the OrientDB presentation for the Open Source Italian Conference in Cagliari, ItalyCheck out this SlideShare Presentation: <div style="width: 425px;" id="__ss_4476629"><strong style="display: block; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/lvca/orient-db-introduction" title="Orient db introduction">Orient db introduction</a></strong><object id="__sse4476629" height="355" width="425"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=orientdbintroduction-100611113558-phpapp01&stripped_title=orient-db-introduction"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed name="__sse4476629" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=orientdbintroduction-100611113558-phpapp01&stripped_title=orient-db-introduction" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"></embed></object><div style="padding: 5px 0pt 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/lvca">lvca</a>.</div></div><script src="http://b.scorecardresearch.com/beacon.js?c1=7&c2=7400849&c3=1&c4=&c5=&c6="></script>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-50475702231227424552010-02-19T00:38:00.008+01:002010-02-19T00:54:19.421+01:00Romulus workshop in MadridMadrid, February 18th 2010. The day seems to be finished and it has been a pretty long day for me. This morning wake up at 7:30 o'clock, 8:30 breakfast at the Starbucks in front at the hotel and then straightforward to the <a href="http://www.upm.es/">Universidad Politécnica de Madrid (UP</a><a href="http://www.upm.es/">M)</a> for the Romulus meeting and for the Romulus Workshop in the afternoon.<br /><br />Today I've presented Roma Meta Framework to a bunch of students and some business IT men interested on the fast developing of Web Applications following the DDD approach, the Meta Framework philosophy and obviously <a href="http://www.romaframework.org">Roma</a>. We have had a hands-on session where almost all the attendees tried to follow me step by step on the building of a simple social application. I hope today the Roma community welcomes some new committers.<br /><br />Below some photos shooted by Marco.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ewA_UGCcAaS3o_khHsZN-GRoteEdiaKyIvsfRqicVENZWmtmuRdJSMzFjY-0wUkhVCUxpr52DEckWkYwhOIsNKQofskQitFwU_yD8pgVXmw2albVI_E5DFWFrtKIfeSr00fg/s1600-h/P1030398.JPG"><img style="cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ewA_UGCcAaS3o_khHsZN-GRoteEdiaKyIvsfRqicVENZWmtmuRdJSMzFjY-0wUkhVCUxpr52DEckWkYwhOIsNKQofskQitFwU_yD8pgVXmw2albVI_E5DFWFrtKIfeSr00fg/s200/P1030398.JPG" alt="" id="BLOGGER_PHOTO_ID_5439733942524593890" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsIzDej64HllWhFZwWrVVOfuA21ns_I4E1ER7O7y4FCB_-7KiRB7rSAgQdqrQkngzERO0ZirrUngeNk03oFWPqxFgsl7dnesN_FCQJt04-ypTgAw3OUSs_eVZ5rwIekSLVXGKJ/s1600-h/P1030386.JPG"><img style="cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsIzDej64HllWhFZwWrVVOfuA21ns_I4E1ER7O7y4FCB_-7KiRB7rSAgQdqrQkngzERO0ZirrUngeNk03oFWPqxFgsl7dnesN_FCQJt04-ypTgAw3OUSs_eVZ5rwIekSLVXGKJ/s200/P1030386.JPG" alt="" id="BLOGGER_PHOTO_ID_5439732144287192146" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtA-GIrfZoz_Wkc53OBAh6B5_CZSUAvdUt8_eQhsJDutk2ziu7Kd6blOhAUepsd8zrn_rxX0XPiXDdtRxC6SGYX3dbwHSjDl7LbJS_yLGMA7LQxeuiG28rcWdNHbyt6OMMH1IF/s1600-h/P1030400.JPG"><img style="cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtA-GIrfZoz_Wkc53OBAh6B5_CZSUAvdUt8_eQhsJDutk2ziu7Kd6blOhAUepsd8zrn_rxX0XPiXDdtRxC6SGYX3dbwHSjDl7LbJS_yLGMA7LQxeuiG28rcWdNHbyt6OMMH1IF/s200/P1030400.JPG" alt="" id="BLOGGER_PHOTO_ID_5439734080518937202" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2_pYYakUPvA6ofSK3odIPq-ZFlWH1sIN3hCEYhmuy1CUh2T7EC1cyUuOVSlLaobXwk_feeNkvZ7wf8Dg6aYHIa7DMtcoD2bAiFVFVDHTg3LHHl_kW-SHy9X5Lq60S6FI50lG/s1600-h/P1030413.JPG"><img style="cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2_pYYakUPvA6ofSK3odIPq-ZFlWH1sIN3hCEYhmuy1CUh2T7EC1cyUuOVSlLaobXwk_feeNkvZ7wf8Dg6aYHIa7DMtcoD2bAiFVFVDHTg3LHHl_kW-SHy9X5Lq60S6FI50lG/s200/P1030413.JPG" alt="" id="BLOGGER_PHOTO_ID_5439734349534605266" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC7ceeBAGa0VD2Zz1DbvMn2ySVqaBbk59OXJsqNPH7QZcxkKy-N_n-3HOmk7BLdIsyQnTmRDXBL8dSoHUADDyC5K3wZ_lM6r0uZw11i3Z6-3yyzQtoPGeU4XHRp1pzba-2BiZa/s1600-h/P1030402.JPG"><img style="cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC7ceeBAGa0VD2Zz1DbvMn2ySVqaBbk59OXJsqNPH7QZcxkKy-N_n-3HOmk7BLdIsyQnTmRDXBL8dSoHUADDyC5K3wZ_lM6r0uZw11i3Z6-3yyzQtoPGeU4XHRp1pzba-2BiZa/s200/P1030402.JPG" alt="" id="BLOGGER_PHOTO_ID_5439734247211186354" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcMixEJhcp95SZbbTsCsH9RATI0eAFN8snCQQm94cGZMr1Kb8PiBK_wabfc1mNozqSPYtzAKGWp_DYURtH4YucrWNQ39hZ7OlmxjzplJHD2WVzJHLaOZAfp1wx2CqdiSmJI4Zk/s1600-h/P1030415.JPG"><img style="cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcMixEJhcp95SZbbTsCsH9RATI0eAFN8snCQQm94cGZMr1Kb8PiBK_wabfc1mNozqSPYtzAKGWp_DYURtH4YucrWNQ39hZ7OlmxjzplJHD2WVzJHLaOZAfp1wx2CqdiSmJI4Zk/s200/P1030415.JPG" alt="" id="BLOGGER_PHOTO_ID_5439734422214278242" border="0" /></a><br /><br />Anyone is in Madrid until Saturday morning?Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-30363199149082206722010-02-13T18:13:00.009+01:002010-09-15T18:08:17.642+02:00Orient DB almost ready for the show time!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.orientechnologies.com/"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 220px; height: 220px;" src="http://www.orientechnologies.com/images/orient_sun_logo.png" alt="" border="0" /></a>After some weekends of work I've in my hands the first version of <a href="http://www.orientechnologies.com/">Orient DB</a>! I wrote a lot of Unit Tests that helped me a lot on the heavy refactoring in order to achieve the best performance than ever. The main features of <a href="http://www.orientechnologies.com/">Orient</a> are:<br /><ul><li>Full <span style="font-weight: bold;">ACID</span>: Optimistic transaction available with recovery of aborted transactions when the engine restarts. Tested with <span style="font-weight: bold;">1 billion</span> of records even with simulated crashes during the commit phase. Pessimistic (with object-level locking) transaction in the next releases.<br /></li><li><span style="font-weight: bold;">Extremely light</span>: less than 400kb of jar without any dependency with other libraries</li><li><span style="font-weight: bold;">Super fast</span>: stores 1,000,000 (yes one million) of records in 3.5 seconds on common hardware (my notebook). The <span style="font-weight: bold;">KeyValue</span> engine stores 100,000 entries indexed in 9 seconds. <span style="font-weight: bold;">Lookups </span>are so fast as memory access.</li><li>tested up to 1 billion of records, but the limits are up to <b>9.223.372.036 Billions.</b> Actually I think I'll never will be able to include this test in my Unit tests :-)</li><li>A lot of cool features such as Asynchronous Queries, SQL language, Partitioning of data, native sharding support, and more<br /></li><li>Requires: Java5 or major and run on all the most used Operative Systems.<br /></li></ul>What about the license? I have no choose yet, maybe LGPL?<br /><br /><a href="http://www.orientechnologies.com/">http://www.orientechnologies.com</a>.Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-89593070959477570662009-12-24T12:32:00.001+01:002009-12-24T12:34:42.163+01:00Released TevereFlow, the first workflow engine with a Web Editor<table border="0"><tbody><tr><td><a href="http://www.tevereflow.org/"><img src="http://www.tevereflow.org/img/logo_tevere.jpg" border="0" /></a></td><td><p>Starting from December 22nd 2009 is available the new version of TevereFlow.</p><p>Tevere Flow is a light-weight Workflow engine built using the Java® technology. Just download it and create your process using the Web interface. You can use Tevere as embedded or as external engine by using the provided Web Services API.</p></td></tr></tbody></table><p><span class="Apple-style-span" style="">Tevere was built using <a href="http://www.romaframework.org/">Roma Framework</a> under the <a href="http://www.blogger.com//">Romulus</a> consortium an it's currently used in several production systems.</span></p><p><span class="Apple-style-span" style=""></span>Main features:</p><ul><li><strong>Open Source</strong> Apache 2.0 license</li><li><strong>Web</strong> User Interface using the <strong>Ajax</strong> technology</li><li><strong>Stand-alone</strong> application: just download and start it</li><li>Fully <strong>Transactional</strong> supporting any <strong>RDBMS</strong> or db4o <strong>ODBMS</strong></li><li>Set of <strong>built-in commands</strong> available (email, web service invocation, etc.)</li><li><strong>Auto-resume</strong> of failure activities</li><li><strong>User</strong> and <strong>profile</strong> management</li><li>Activities can be written in Java or using any supported scripting language such as <strong>Javascript</strong> and <strong>Ruby</strong></li><li>Integration via <strong>Java APIs</strong> or <strong>WebService</strong></li></ul>Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-31971550225990980032009-12-22T10:52:00.009+01:002009-12-22T11:06:48.128+01:00Search on FreshmeatAfter I've posted the last release 2.1.0 of Roma Meta Framework on Source Forge I tried to search the project by typing <a href="http://freshmeat.net/search?q=roma&submit=Search">"Roma"</a> in the search field of Freshmeat home page:<br /><br /><div style="text-align: center;"><span style=";font-family:arial;font-size:100%;" ><span style="font-weight: bold;">0 search results for: roma </span></span><br /></div><br />What???? If I type <a href="http://freshmeat.net/search?q=roma+framework&submit=Search">"Roma Framework"</a>: the result is always 0 (zero) results but with the result table filled:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO3fATRGvj3ZQ6HmxdINVEE5wklJKmpPNXk2Wp_o6I7xHXeC6rgfW6qX0vht9BJpZCwT88lSlwn64bTGQqfcXKcf-Ozzb2Nll8RZdzPECXTGOIiVHHLLEhLm-eSuPTi-Tv3e2B/s1600-h/freshmeat2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 109px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO3fATRGvj3ZQ6HmxdINVEE5wklJKmpPNXk2Wp_o6I7xHXeC6rgfW6qX0vht9BJpZCwT88lSlwn64bTGQqfcXKcf-Ozzb2Nll8RZdzPECXTGOIiVHHLLEhLm-eSuPTi-Tv3e2B/s400/freshmeat2.png" alt="" id="BLOGGER_PHOTO_ID_5417997547186943474" border="0" /></a>Maybe they require an exact search? Not properly, since if I try to search for <a href="http://freshmeat.net/search?q=framework&submit=Search">"framework"</a>:<span style="font-size:100%;"><br /><br /></span><div style="text-align: center;"><span style="font-size:100%;"><span style="font-weight: bold;font-family:arial;" >1941 search results for: framework</span></span><br /></div><br />What kind of search is it?Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com0tag:blogger.com,1999:blog-13838184.post-62078235736860835322009-10-01T10:09:00.010+02:002009-10-01T10:55:08.284+02:00Terracotta as distributed DBMS? Bad idea!Some months ago I have had a fucking genius idea about a new application. In order to start working to my idea I need to distributed at large tons of objects in several nodes around the Internet. After a deep research about all the best solutions available now I decided to try Terracotta.<br /><br />Basically I need a real distributed Object repository so why don't create a simple Object DBMS virtually all in RAM and let to <a href="http://www.terracotta.org/">Terracotta</a> most of the hard work?<br /><ol><li>Handle the cache on nodes</li><li>Manage the object/page fault in a transparent way for the application<br /></li><li>Share the load among nodes</li><li> And obviously: <span style="font-weight: bold;">read/write objects in persistent way</span></li></ol>So I've developed a very simple library that uses the JDK 1.6+ TreeMap to collect data and to query them. I was surprised to discover how much terracotta makes a good job in hiding the dirty work and complexity of data distribution.<br /><br />But before to think to use this piece of code in a production system I need to be sure that the objects became really persistent in ACID way. For this reason I developed some Test Cases as microbenchmarks to see the real throughtput and if data are written in synchronous way to the disk. This was my test using the library I wrote:<br /><br /><span style="font-size:85%;"><span style="font-family:courier new;">UserDatabase db = ServerNode.getInstance().connect("petshop", null, null);</span><br /><span style="font-family:courier new;">clazz = db.getClazz("Animal");</span><br /><br /><span style="font-family:courier new;">for( int i = 0; i < 100000; ++i ){<br /> UserObjectTransient object = clazz.createObject();</span><br /><br /><span style="font-family:courier new;"> object.setValue("name", "Gaudi");</span><br /><span style="font-family:courier new;"> object.setValue("description", "My crazy ferret!");</span><br /></span><span style="font-size:85%;"><span style="font-family:courier new;"> object.setValue("from", "Barcelona, Spain");</span><br /></span><span style="font-size:85%;"><span style="font-family:courier new;"> object.create();</span><br /><span style="font-family:courier new;">}</span></span><br /><br />Pretty nice, don't you? The <a href="http://www.terracotta.org/">Terracotta</a> server instance was on a remote server with 1GB of heap and enought bandwitch available and the client runned on my laptop. Yes I know, this is a microbenchmark and can't tell to me the performance in all the scenarios. But to go on on my experiments I needed to know if I was totally crazy or if there was a way to build a robust & scalable solution to satisfy my needs.<br /><br />Well, in this test my library + <a href="http://www.terracotta.org/">Terracotta</a> (after some tuning by reading the documentation and the forum) are able to write around <span style="font-weight: bold;">190 objects per second</span>. Not really bad for the first release and in comparison to a RDBMS solution. But I've stored just a dynabean with two properties... I remember in the past (about 8 years ago!) when I tried a real ODBMS (Orient ODBMS) it was able to store 100x of this solution using a 8-years-old hardware!<br /><br />But the really bad news is another one: When the "for cycle 100.000" was finished and the application seemed to be succesfully ended I noted that the console had no control. The test was still running! After 10 seconds I killed the java process and counted the objects created (using the Terracotta console): 99.345!<br /><br />Where are the 655 objects missed? Ok, probably I got wrong about ACID features. No, the <a href="http://www.terracotta.org/">Terracotta</a> documentation tells ACID! But how it can be ACID if the client sends the objects to the server in asynchronous way?<br /><br />I'm pretty confident that it would be exist in any point of configuration the real synchronous mode but even though it exists what about the performance? If this ASYNCHRONOUS solution was able for 190 obejcts/sec as throughtput the synchronous one must be much more slow!<br /><br />These are the reasons why I abandoned this path. <a href="http://www.terracotta.org/">Terracotta</a> surely fits well in traditional replication contexts and the product is really good on documentation, presentation, APIs, etc. But for my needs I have to continue in searching...Luca Garullihttp://www.blogger.com/profile/04523569178463279505noreply@blogger.com21