When I started looking at NoSQL databases about five years ago, I was intrigued by their innovations in schema flexibility, scalability and programmability. But I was shocked at their lack of maturity in so many other areas: several products lacked joins, indexes (other than on their primary keys), query languages, stored procedures, sophisticated security and cost-based optimizers. It was as if the creators of these databases were so disenchanted with the relational database world that they rejected everything about it, including its standards of maturity and enterprise readiness.
That's all changing now as NoSQL databases are eyeing Enterprise revenue and, frankly, getting on in years themselves. And now, Neo Technology's Neo4j, the graph database that many in the industry know of, but with which, I think, few have great familiarity, has reached an important threshold for any software product: general availability of its third version. And as it passes over that threshold, Neo4j had added a lot of important capabilities.
On the tooling side, Neo4j Browser now works with a cloud-based sync mechanism, dubbed Neo4j Sync, which allows developers' workspaces to travel with them from machine to machine.
There's more. The product now features stored procedures, which can be written in Java or any JVM-based language. It has also added JDBC connectivity from Neo4j to other databases. This means stored procedures can integrate data from Neo4j with data in other databases -- likely conventional RDBMSes -- and return it all in graph format. Add to this a revamped storage engine, which apparently eliminates ceilings on graph size and index size, among other limits, and you've got a product that is much more ready for mission-critical workloads.
Of course, product maturity is about more than catching up with older requirements; it's also about adapting to contemporary changes in the industry. One of the biggest trends in that department is container technology. The good news there is that Neo4j has a new file, config and log structure to optimize compatibility with Docker, as well as cloud deployment in general.
This is a lot of stuff, and I'm going to go out on a limb and say that developers should raise the priority of self-education on graph database technology. For the former, the folks at Neo alerted me to their Graph Academy, which seems to be an excellent resource.
Graph technology looks here to stay, and not just with pure play products like Neo4j. In fact, just two weeks ago, Cassandra vendor DataStax announced the addition of graph database capabilities to its DataStax Enterprise product. That looks like real validation to me. And I wouldn't be surprised if one or more of the major RDBMS vendors embraced graph technology in one of their upcoming releases, too.
Time to expand those skillsets.