Bolting Forward: The Neo4j 3.0 Milestone 1 Release Is Here


Learn about the New Features Now Available in the Neo4j 3.0 Milestone 1 ReleaseHappy Friday, Neo4j alpha-developers! Good news: The first milestone release of Neo4j 3.0 is now ready for testing. Download Neo4j 3.0.0-M01 here.

Disclaimer: Milestone releases like this one are for development and experimentation only as not all features are in their finalized form. Click here if you’re looking for the most fully stable version of Neo4j (2.3.1).

The Neo4j 3.0 Milestone 1 release introduces Bolt, a new network protocol designed for high-performance access to graph databases. Bolt will consolidate and refine all the ways of doing work with Neo4j, providing more consistent access with a pleasant separation of responsibility.

This is the start of a new major branch of development for Neo4j. The work will bring forward all the best features of Neo4j, while leaving behind some things which are no longer useful.

These early days are an incredibly useful time to provide feedback, so please let us know what you think about where we’re headed.

Neo4j 3.0 Milestone 1 is available for download today as part of our Early Access Program.

Uniform Language Drivers with Bolt


For everyone building Neo4j applications, Bolt will improve both the performance as well as the developer experience. Bolt is a connection-oriented protocol, using a compact binary encoding over TCP or web sockets for higher throughput and lower latency.

To complement Bolt, we’re releasing official drivers which encapsulate the protocol, freeing contributors to focus on unique language and framework integration.

Java, JavaScript and Python drivers are available today, with other languages to follow soon. Each language will have a uniform approach for common, basic operations.

As an example, take a look at this code snippet using the Java driver (org.neo4j.driver:neo4j-java-driver:1.0.0-M01):

Driver driver = GraphDatabase.driver("bolt://localhost:7687");
try (Session session = driver.session()) {
  Result rs = session.run(
     "MATCH (:Person {name:{name}})-[:ACTED_IN]->(m:Movie) RETURN m",
                          Values.parameters("name","Keanu Reeves"));
  while (rs.next()) {
     System.out.println(rs.get("m").get("title").javaString());
  }
}

This client-side API is under active development, but this already gives you an idea what it will look like.

The drivers are available through language-specific distribution systems, with source code on GitHub: A PHP driver with support for Bolt is being worked on by our partner GraphAware.

Cypher Advances


Bolt’s always-on connection is a huge advantage over per-request connections when there is a high volume of small Cypher queries.

While the HTTP interface will remain available, we want the faster Bolt connection to be the only one you need. Cypher will expand its reach beyond graph queries to encapsulate all Neo4j operations with a uniform request and response pattern.

Included in this milestone, the Cypher cost-based planner is now capable of handling queries which mix reads and writes.

Previously, executing any write operations would fall back to the rule-based planner. Now, several common writes are supported:
    • CREATE nodes and relationships
    • DELETE and DETACH DELETE
    • SET and REMOVE labels
    • SET properties
    • MERGE node
Ongoing work will add support for MERGE of relationships, LOAD CSV and FOREACH.

Additional Notes about Milestone 1


Neo4j Enterprise Edition now exposes more metrics values and provides more documentation.

The ability to log to a single CSV file was removed. Also, the dashboard in webadmin has been removed; please refer to :sysinfo in the Neo4j browser or the appropriate metrics for that information.

The has() function in Cypher, which was deprecated in Neo4j 2.3, has been removed in favor of the more descriptive exists().

One important thing to note is that Neo4j now requires Java 8. Our desktop installers now bundle a Java 8 JRE. For other installations and embedded use, make sure to have Java 8 available.

We Need Your Feedback!


As always, early access releases give you a way to evaluate fancy new Neo4j features that will make our next versions even better. What we ask in return is for your feedback on what things worked well (or didn’t).

Please be aware that milestone releases are beta software not meant for production use, nor do we provide an upgrade path for them.

Send your feedback for this release to feedback@neotechnology.com or raise an issue on GitHub. If you have any questions, feel free to ask on our public Discord channel or post in our Google Group.

Please download the Neo4j 3.0 Milestone 1 release, and give it a try. Happy testing!

Cheers,
Andreas


The O’Reilly Graph Databases ebook shows you how to use graph technology to solve real-world problems. Click below to get your free copy of the definitive book on graph databases and your introduction to Neo4j.