Thursday, December 30, 2010

Neo4j 1.2 Final - Prêt-à-Porter



With the Neo4j components, we supplied the fabric for stitching together graph-based applications. Now, with Neo4j 1.2 we are proud to offer a ready-to-wear graph server, for dressing up any application in graph style. This is the start of a new trend, as we incorporate more of the components into services which are easily accessible from any language, on any platform.

NOSQL Graph Database Super Model

A classic Neo4j graph model.

Neo4j is one of the fashionable Not-Only-SQL alternatives to traditional storage, representing the graph database category. A graph database is a natural fit for any data, optimized for accessing related records rather than aggregating data. The "records" are nodes or relationships, because both can store properties.

From the filesystem up, Neo4j is designed for efficiently storing and querying graphs of data. Whether using the new server or embedding the components in your application, you get the same robust graph database, ensuring durability, consistency, and ease of access. Let's listen to designer Emil Eifrem on the subject ...

A New You in 1.2

It's fun to say: Neo4j now runs as a server! Running as a server hides some of our Java underwear, presenting a respectable RESTful interface to applications written in any language, running on any platform. Ruby rock stars, Pythonistas, PHP script heads, C# sharpeners (hm, that doesn't quite work), you are all welcome here.

The server's REST API is well documented and discoverable, exposing the essentials of graph services: nodes and relationships, indexing, traversals, and a few algorithms. If it doesn't quite suit your tastes, you can use the Plugin API to add low-level operations which are then available through REST. Perhaps a new traversal algorithm, or a set of nodes representing an entire application entity. Whatever you'd like.

Of course, a real server should run as a system service. With appropriate privileges you can easily install Neo4j as a Windows service, or as a Unix daemon, participating in the proper startup and shutdown process of the operating system.

And, it has a lovely web-based administration interface ...

When you're ready for massive exposure, you'll want to consider ...

Being Highly Available

For demanding applications, the High Availability (HA) feature of Neo4j provides an easy way to set up a cluster of graph databases. You get read scalability that tolerates faults in any participating machine. Writes are allowed to any machine, though synchronized with a slight delay across all of them.

While useful today, Neo4j High Availability is a sneak preview with a few limitations. It does provide scalability for read load, but write operations are slightly slower. Adding new machines to a cluster still requires some manual work, and very large transactions cannot be transmitted across machines. These limitations will be addressed in the next version of Neo4j.

Custom Tailored

But 1.2 news isn't all about the server. Embedded developers will enjoy some new components, and also updates to existing ones.

1. Kernel

The kernel has a much smaller memory footprint. Read performance has improved significantly. And, there is a new weak reference cache which is perfect for high load, low latency workloads.

A new indexing API is integrated with the GraphDatabaseService, better aligning the lifecycle of the service and making the indexes a natural complement of the graph.

Finally, the kernel now has service extensions that load automatically, or can be injected in a running instance. Examples include the Neo4j shell server and the management component.

2. Graph Database Monitoring and Management

Monitoring and management has been moved into its own component that will be loaded automatically as a kernel extension. This component lets the graph database instance participate in your JMX management infrastructure.

3. UDC

The Usage Data Collection component provides built-in feedback for guiding the development of Neo4j. More about that can be read in our previous blog post on the subject.

For more details about these and all the components, check out the components website.

Strut Your Stuff

OK, enough about us. Let's talk about you. Show us what you can do.

As always, we're grateful to our great community of contributors, both of code and comment. Thanks everyone!

Cheers to the New Year!

7 comments:

Ivan said...

Every year I check up on this: is there a still a limit on the number of nodes you can have before a commercial license is required for commercial applications?

Anders Nawroth said...

@Ivan: There's no limits on the numbers of nodes because of license since quite long now. For commercial applications you can even get a basic server for free, see the product overview and basic server free. You can also use Neo4j under the AGPL3 open source license, but then you have to follow the rules of that license.

Anonymous said...

It is amazing how powerful neo4j could be, if it used a more license. I thoroughly understand that you guys need to make money and the AGPL makes sense for that.

But I cannot tell you what a turnoff it is that it is even impossible to use neo4j in a competely non-profit hobby project. I d gladly try to convince my manager to invest in neo4j if only I could get my hands dirty with it in a small project. But all this agpl-license, limit of nodes FUD, etc just gets me in a "meh whatever"-mood.

Peter Neubauer said...

Hi there!
For a hobby project, there is nothing wrong in getting your hands dirty. Especially when you just are trying, the AGPL is absolutely no problem. It first kicks in when you have public customers accessing closed source code, so for development, testing, closed beta etc there is no problem.
At that point, contacting Neo Technology for a free license should not be a problem? Remember, we are a startup, too, so we understand your view.

Happy New Year!

/peter

Sandeep said...

Neo4j looks like a great product.
Thanks for explaining that to me.

http://owntechnology.blogspot.com

The Germanibian said...

Thanks for that sexy admin interface!

Peter Neubauer said...

Glad you like it. Any feedback on what you also would like to see?