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.

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):

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.

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.

About the Author

Andreas Kollegger,
Senior Product Designer

Andreas Kollegger is a technological humanist. Starting at NASA, Andreas designed systems from scratch to support science missions. Then in Zambia, he built medical informatics systems that complement technology with social good. Now with Neo4j, he is democratizing graph databases which elevate understanding by emphasizing relationships.

Andreas joined Neo4j as an early member of core engineering. He has now taken on the role of Senior Product Designer, crafting a developer experience that balances simplicity with power.

This website uses 'cookies' to give you the best, most relevant experience. Using this website means you’re OK with this. You can change which cookies are set at any time - by clicking on more info. Accept