Neo4j Blog

Neo4j 1.3 M03 – With (short) strings attached!

Today marks the release of our third milestone (M03) towards the Neo4j 1.3 “Abisko Lampa” release, which is now available for download. It’s been a busy iteration with several parallel streams running covering low-level footprint optimizations through to high-level usability, sysadmin and operations support. We’ve also been thrilled by fantastic threads on the mailing list and by how Neo4j has been received out in the community during this release cycle. When we’re slogging away on the code it’s great to know that we have such a fabulous community working with us at every step – thanks folks!

Kernel changes

Usually we don’t talk much about the things going on in the kernel since we’re just constantly doing computing science stuff to make it better. But for this release we’re really excited about what’s going on down in the engine room.

We’re particularly enthusiastic about our new improvements for short strings. This upgrade allows our storage engine to inline common short strings (things like Java enum names, or Ruby symbols), meaning we get much more compact data files and faster reads/writes for short strings since we don’t have to use the DynamicStringStore. If you’d like to know more (including what’s considered a short string) then head over to Tobias Ivarsson’s blog posting.

We’re really grateful to all the people out in the community who took the time to run our statistics gathering application on their databases. From that, we know that our short-string implementation really meets your needs.

In keeping with our focus on usability, this iteration also gave us a chance to reflect on things that make our users’ experience better once they’re in deployment. In particular we now support both full and incremental backups over the network using our backup tool (which incidentally is based on the same rock-solid codebase that we use for Neo4j High Availability).

Server improvements

The server product is coming along steadily. In this release we’ve focussed on improving usability as we work towards our high availability (HA) server release for 1.3. In particular we’ve fixed a few of those visual niggles in our Webadmin tool and made our configuration file way simpler and DRY. We’ve also added a small RESTful discovery API, so if you’re building your own tools around Neo4j server, it’s easy to lookup what services are available and where they’re hosted.

We’ve also split out the API for managed server plugins into its own separate small jar which you can pull from a Maven repo and get started on building cool server plugins easily (don’t worry, you don’t need to use Maven, we just like the Maven repository system). Naturally the server also benefits from all the goodness being poured into the kernel and embedded database too!

Devteam gossip

Last time round we announced that we’d moved all the Neo4j code over to Github which has been largely successful, though we experienced a bumpy patch or two with our build system.

We’re now looking to deploy a new continuous delivery system which will take code in, and spit out fully QA’d builds of our products several times per day. In doing this we’re hoping to simplify our own housekeeping (no more Maven madness) and be able to provide rapid turnaround for features to the community. So over the next iteration look out for announcements on the mailing list asking for your input on what you’d like to see.

Until then, thanks for hanging out in the coolest block in the NOSQL neighborhood!