Thursday, December 27, 2012

Neo4j 1.9.M03 released

Hi all,

in the middle of the end-of-year festivities we are happy to announce another Neo4j 1.9 milestone before the year ends. This time, it is a milestone that is all about stability for 1.9.GA and paves the way for a major dependency version upgrade in the next version. For a full changelog, see the original on Github.


We removed an issue with relationship-type-id’s which allows everyone to use the full size of 16 bit aka 65535 different relationship-types now. We also worked on the Java7/OpenJDK support (so far compilation and tests).

High Availability

For the new HA mode we improved the logging, added more tests and made it more robust on startup and when clients leave the cluster in order to stabilize the component for Neo4j 1.9.GA.


In this milestone, the code for the Tinkerpop integration into the Neo4j Server and its Web-Interface and the Gremlin Plugin has been refactored and centralized. This makes all Tinkerpop dependencies reside only inside that plugin. So it will be possible to support two versions of the Gremlin plugin, one for the 1.5 release and another plugin for the current 2.2.


Cypher got a lot of internal refactoring, especially around the internal handling of start- and updating clauses and general parse-result representation and management.

Our Cypher code has seen some bug fixes, namely around queries that returned non-existant paths, substring length limits and updating properties in bulk with SET. We also removed the now obsolete Cypher Plugin that has been deprecated for two releases now.

With that, 'nuff said. Grab the release here. Now on to the next milestone and Happy New Year from the Neo4j community!


Friday, December 21, 2012

Neo4j goes World Wide #neo4jwwtour

Today we release the dates and cities for the first part of the Neo4j World Wide Tour
Since the world has not collapsed today, according to Mayan prophecy, we can go ahead!

The 2013 Neo4j World Wide Tour is officially on!

We’ll cover the East Coast, West Coast and South-West of the United States. In Europe we will visit the biggest cities like Stockholm, Paris, London, Berlin, Madrid, Hamburg.

We will be coding, learning, laughing and talking with you guys. We will be with you all over the place to spread graph love around the world.

As the world wide community manager I will be on every location we set up, just to talk to you and have fun. 

2013 is the year  - for you as a developer, graphista, curious persons who likes to learn more about graph databases, NoSQL and Neo4j.

Love your skill and teach it forward as the wise men say.

A Big Thank You to all people who have helped me organize these meetups.  <3

East Coast Tour

Boston 9th of January
Max De Marzi from Neo Technology will give us an introduction of NoSQL, Graph databases and Neo4j.

Washington 14th of January
Peter Neubauer, Co-founder of the Neo4j project, VP of Community at Neo Technology and hardcore Neo4j coder with over 400k lines committed, will give an introductory talk about Neo4j: What is it? How can I use it? What are others doing with it?

Durham 15th of January
Peter Neubauer, see above.

Atlanta 16th of January
Peter Neubauer, see above.

New York 17th of January
FiftyThree’s first product was Paper, an iPad app for capturing freeform ideas and winner of the 2012 Apple Design Award for iPad.... Also, Aseem is one of the authors of the Neo4j Node.js bindings,

And then....

View Larger Map

Canada / West Coast Tour


USA / West Coast Tour

Los Angeles *
San Diego *
San Francisco
Silicon Valley *

South West

Austin *

* First Neo4j meetup (Do you want to be the organizer of the group?

West Coast dates will be released in mid-January.
The tour dates for Europe will be released in February/March.

A Merry Christmas and a Happy New Year to all of you - looking forward to meet you next year!



Community Manager @ Neo Technology
t: @p3rnilla

P.S: To make this more awesome, we need your help. Do you want to host a Neo4j meetup in your city? Show off your cool project to other hackers? Just give me a ping!

Monday, December 17, 2012

Neo4j 1.8.1 - Stability and (Cypher) Performance

The latest stable version of Neo4j is an important milestone in terms of stability and performance.

We push boundaries on every major release, for the maintenance release we worked on feedback from customers and addressed some of the issues they have encountered.

In particular, Cypher has been extended with support for the new Bidirectional Traverser Framework, meaning query times are in some cases cut down to a third of what they used to be. Also, Andres spent time optimizing memory consumption, so you can run more and larger Cypher queries faster than ever before!

We got started on extending JVM and Java version support by eliminating compilation issues for Java 7 on both Oracle JVM and OpenJDK - a good first step. We still have some way to go, notably rigorous testing as part of our continuous integration pipeline, and community feedback - this is where you come in. We have had some confusion over this, so we have now inserted checks and warnings that state clearly: we currently only support JDK 6.

For our enterprise customers we have added a new consistency checker that both runs faster and catches more problems, to ensure your backups are always in a good state. And we straightened out some behaviours in our HA protocol around cluster formation that were confusing.

With that and various other fixes we strongly encourage you to upgrade to Neo4j 1.8.1 at your earliest convenience. See also the release-notes.

Happy Holidays!

Lasse, for the Neo4j Team

Saturday, December 8, 2012

Neo4j 1.9 M02 - Under the Hood

We have been working hard over the last weeks to tune and improve many aspects in the Neo4j internals, to deliver an even faster, more stable and less resource intensive graph database in this 1.9.M02 milestone release. Those efforts span a lot of areas that benefit everyone from the typical developer to sysops and to most other Neo4j users.

We are thrilled about the feedback we got from customers, and our community via Google GroupStack Overflow and Twitter. Thanks for helping us improve.

While the new changes might not be visible at the first glance, let's look into Neo4j's engine room to see what has changed.

Everyone's most beloved query language, Cypher, has matured a lot thanks to Jake and Andres' incredible work. They have made query execution much faster, for most use-cases, while utilizing less memory. The lazy execution of queries has sneaked away lately, so Andres caught it and put it back in. That means you can run queries with potentially infinitely large result sets without exhausting memory. Especially when streaming results (no aggregation and ordering) it will use only a tiny fraction of your memory. The very frequent construct ORDER BY ... LIMIT ... now benefits from a better top-n-select algorithm. These latest improvements are closing the performance gap to the core-API even more. We've also glimpsed a new internal SPI, that will allow Cypher to run even faster in the future.

For top speed please make sure to use query parameters everywhere, it helps a lot even if the now configurable query cache size (e.g. query_cache_size=1000) allows for a larger number of queries to be cached.

As for some eye-candy, we provide you with a slicker version of the Neo4j console which now features interactive jQuery data result tables to allow in-browser filtering, searching and paging.

Our shiny new High Availability Cluster can now be upgraded seamlessly from an existing Zookeeper based setup to the new infrastructure that runs on a Paxos (coordinator-free) implementation. So you can upgrade your test-clusters without any downtime, if you want to know more, please check out the HA documentation.
For a better HA experience, we have added a new extension providing current cluster information that a load balancer can act on to update its routing. For the curious, there is also much more JMX monitoring information about the cluster available in the web interface.

In the depths of the Kernel, several performance improvements have been applied resulting in a better overall performance of Neo4j.

A nice feature we created due to a user request is the OrderByTypeExpander that keeps the provided order of relationship-types AND directions during the traversal.

To be better safe than sorry, we have sandboxed the JavaScript traversals that are exposed via the Server REST API to be more secure.

Now, go ahead and give your project some Neo4j love. Test it with the lastest and greatest Neo4j release so far and tell us how we did. Download it from the new Neo4j website that we created for your convenience and learning experience. And while you're on it, please explore the new site and provide us with feedback on its helpfulness.

Happy hacking!

/Peter and Michael