Software and Other Stuff

07 Oct 2013

Graphs are Everywhere! An overview of GraphConnect San Francisco 2013

Neo4j is a very cool Graph Database which sports an embedded mode for Java applications but also an stand-alone server with a REST API. Drivers are available for a ton of different programming languages.

The developers of Neo4j organized GraphConnect @ San Francisco and I was lucky enough to be invited! Hereby I present some of the notes I took.

GraphConnect 2013

New Opportunities for Connected Data, by Emil Eifrem

To me, the take away on this keynote was the notion that, in any given data set, there are relations to be discovered: "There's a Graph for That!". Exploiting this relationships can give a company an strategic advantage over competitors.

Emil mentioned a paper published by Gartner: The Competitive Dynamics of the Consumer Web: Five Graphs Deliver a Sustainable Advantage. Hopefully I'll get a hold of that paper at some point, sounds like an interesting read! Many times relationships are not self evident. A question that we can ask ourselves when observing a given system is: What five graphs exist here?

Emil announced a free course on Neo4j will be made available on, probably by end of October.

He finished by demoing a bit the sweet new data browser for Neo4j, built with AngularJS.

What's new in Neo4j 2.0, by Andreas Kollegger

Labeling is a new feature that replaces the need to assign { type: "Type" } properties on Nodes or create (Node)-[:IS_A]->(Type) relationships. Labels are light weight and shouldn't be thought of as a rigid type system. Labels are automatically indexed, so it is efficient to query for all Nodes with a certain label.

Another new feature is constraints: for instance, we can now constraint that a given property, like title, should be unique across nodes.

CREATE UNIQUE is going away and will be replaced with MERGE.

Many other things mentioned in this talk are well documented in a couple of blog posts in a much better way than I could do:

DIY Graph Search, by Max De Marzi

Max demoed a search engine accepting natural language queries, similar to Facebook Search.

He implemented the parser using treetop, so not really a full natural language processor, but it was a nice hack for getting something working quickly. The app worked by converting human friendly search patterns to Cyper queries.

Graph Adoption at Gamesys, by Toby O'Rourke

I was looking forward this talk because I really like both subjects: Graphs and Video Games! :)

The talk was about how Neo4j is used on Gamesys to back many of their games.

An example was how they tracked referral of friends. By visually plotting the referrals, suspicious activity patterns can be quickly spotted.

Graphs can also be used to model game economy. By putting all monsters, characters, locations and items of an RPG on a Graph, an analysis can be done showing things like monster that are too easy to beat or items that are too cheap or too expensive. The talk was a bit vague though about how to exactly find this things - trade secrets? :).

Hacking Health Care with Neo4j, by Fred Trotter

DocGraph is a Data Set comprised of fifty million connections that shows how healthcare providers team to provide care.

This talk was about were that data came from and what can be done with it. If working with a big health data set sounds interesting to you, you should check this page.

Designing and Building a Graph Database Application, by Ian Robinson

This talk was about Domain Driven Design, how to build an application able to evolve over time, and how to use Test Driven Development during the process. Not surprisingly, these very same tools can be used to build any other application!

The talk showed how to identify the Domain Entities starting from user Stories to the specification of the Data Model. One big advantage when using Graph Databases is that the Entities identified during design phase are often directly translatable to the Nodes and Relationships, in a lot more straightforward and flexible way than when designing the schema for a relational database.

A Little Graph Theory for the Busy Developer, by Jim Webber

Fancy Graph Theory Explained :)

The closing talk from Jim Webber was very entertaining and informative! Some key points:

Some algorithms and concepts mentioned:

A recommended book to dig more into these subjects is Networks, Crowds, and Markets: Reasoning About a Highly Connected World.

I'm pretty sure this talk also mentioned the NoSQL distilled book as a good source of information regarding non relational databases.

A Digression on Graphs, Graph Databases and Graph Processing Systems

Graphs are Everywhere!

There's a distinction to be made between Graph Compute Engines (which are generally used for running offline algorithms over massive amounts of Nodes), and Graph Databases. These concepts are explained well in the freely available Graph Databases Book.

Arguably every big player in the web nowadays is using Graphs in one way or another (a point stressed in Emil's keynote):

Google has also published the Pregel paper describing a distributed graph processing system. Some open source Graph Processing systems, like Apache Giraph, have picked Pregel as the basis for their implementations, but Google itself has not released an Open Source Graph Database or Graph Processing Software package yet.

Related Posts

28 Mar 2014
» Fun with Google's Apps Script! Batch Processing Gmail emails By Host
23 Jul 2013
» Using AngularJS with a Rails backend
21 Apr 2012
» Tidying up an rspec suite with helpers

The opinions expressed in this personal blog represent my own and not those of my employer. All data and information provided is for informational purposes only. This blog makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.  |  icons