I’ve been for quite a while into what they use to call “NoSQL databases” these days, even while we still heavily rely upon infrastructure which is anything else than NoSQL – not a bad thing, overally, I guess half the software developing world still does. Yet, I’ve always been interested in approaches offered by “non-relational” database systems, and be that for the (obvious) idea that maybe there’s problems that aren’t easily or effectively solvable using relational database systems. neo4j is one of the more interesting pieces of technology on that list, and so attending the neo4j tutorial and meet-up held at buschmais in late June, 2013, was quite a pleasant experience…
Effectively, the day consisted of two different parts, first one being a longer tutorial by Michael Hunger, which worked out rather well. Being an introductory course served to an audience not familiar with the technology, the course was prepared, structured, presented rather good. Following the instructions was pretty straightforward, the examples as well as the lab sessions were both insightful and fun, and, in the end, I spent the evening hacking an embedded neo4j instance into an experimental piece of code we are working on in our current research project (which happens to deal with graph data structures, even though down the OWL/RDF road) and had fun playing with the code, the API and the infrastructure. This tutorials focus wasn’t on how to use neo4j from Java, which at some point would have been nice but in the end prove unnecessary as the neo4j Java API is pretty straightforward and playing with the Cypher query language and the things possible in terms of data modeling and querying, from a development point of view, seems by far more interesting anyway. ;) Overally, so, it was quite an inspiring tutorial, leaving one behind with a load of inspirations and ideas what to do with the things just learnt and tried. Which, possibly, is a good thing.
Just logically, the second (evening) part of that day, considered an experimental first “Dresden neo4j Meetup”, was all about, after a short briefing on future neo4j development directions, having two good lectures (by Michael and Buschmais’ Dirk Mahler) who (obviously quite successfully) used and are using neo4j for evaluating and assessing software architecture quality, as can be seen in jqassistant which was presented during that meetup. Though this, overally, is not quite the use case I personally am having in mind for neo4j, it still is a really interesting way of using this technology, not even talking about jqassistant itself being pretty helpful when trying to check and enforce various architectural constraints in larger maven-built projects. Moved to the ever-growing pile of things to play with. :)
So, concluding: It’s been fun. Really enjoyed that day, liked what I learnt, am looking forward to doing more with this. From an “enterprise devop” point of view, so far I am a bit torn about technologies such as neo4j or CouchDB as, even though they do some things in a very convenient and performant way, it also always boils down to introducing new runtime dependency that need to be taken care of in a productive environment in which, in most cases, some sort of persistency infrastructure (well yes, mostly an RDBMS) already is around. Still, the sweet spot about these technologies is that they seem special tools for special purposes, and – after all – no one of us would want to do her or his business correspondence in a spreadsheet application just because “that’s what we got so we should use it”, no? From that point of view I definitely understand and accept NoSQL not as “No SQL” but rather as “Not only SQL”, and from that point of view, for sure it makes sense, for sure it’s worth being evaluated and taken into consideration.
- O’Reilly Press at the moment offers a free pre-print versions of an obviously upcoming book on graph databases, written by people also behind neo4j. Worth checking, not just because it’s for free right now.
- There are live sites out there for playing with neo4j web console and testing some queries using the Cypher language. Maybe worth a try, indeed, for all those who haven’t so far used or tried neo4j.