Another milestone goes by as we pick up speed on the way to the “Kiruna Stol” release. This time we have a host of performance improvements coupled with additions to the REST API.
One of the most striking features of this milestone release is the new index component based on Lucene 3.1. Besides the cleaner API, this upgrade brings impressive improvements in index lookup speed, with index write operations enjoying measurable speedup as well. So, depending on your use case, you might benefit from indexing operations that are twice as fast!
To take advantage of the new index components, you’ll need to upgrade your index store, since Lucene itself has upgraded its store format in a way that is not backwards compatible. While Neo4j will happily upgrade your index store, you should be aware that upgraded stores are not backwards compatible with previous Neo4j versions. So, as always, backup before upgrading and do not try this milestone version in production without extensive testing.
Not REST-ing on our Laurels
Neo4j’s REST interface hasn’t been at feature parity with the Java APIs in the indexing area. With this milestone release, we’ve put an end to that disparity and now all index operations are supported both through the Java APIs and through the REST interface.
For example, the REST interface now supports arbitrary Lucene queries, deletion of indexes and index lookups on default keys. So, deleting the node index named myNodeIndex can be done via HTTP as follows:
curl -X DELETE http://localhost:7474/db/data/index/node/myNodeIndex
Or, to do a generic query on node index named my_nodes for wildcard key the_* and range [1 TO 100]:
curl -H Accept:application/json http://localhost:7474/db/data/index/node/my_nodes?query=the_key:the_%2A%20AND%20the_other_key%3A%5B1%20TO%20100%5D
For complete information on the new REST operations against the index you can always look at the documentation at http://components.neo4j.org/neo4j-server/milestone/rest.html
Better, Faster, Smaller
An important technical change introduced with this release is reverting the default implementation of the Write Ahead Logs from using memory mapped files to a buffer backed equivalent. This should provide you with significant speedups, especially in code that works with small transactions, where our measurements show an increase in throughput of up to 20 times! This scenario is most commonly encountered when working with the server, so users of the REST API should rejoice. We are anxious to hear how this improvement affects your experience with Neo4j.
So, go ahead and download the latest “Kiruna Stol” milestone and let us know what you think!