The NoSQL movement began early 2009 and is growing rapidly. As there are many NoSQL categories and distributions around, this application provides an interactive way to find the best distribution that fits, for instance, students homeworks specs.

An example subset of the Graph

%5BNeo4j%7Bbg:orange%7D%5D based on%3E%5BJava%5D,%20%5BNeo4j%5D is a%3E%5BGraph%20DB%5D,%20%5BNeo4j%5D has api for%3E%5BC%23%5D,%20%5BNeo4j%5D is licensed under%3E%5BGPL%20v3%5D,%20%5BNeo4j%5D current release%3E%5B2.0.0 RC1%5D,%20%5B2.0.0 RC1%5D previous release%3E%5B1.9.5%5D

The Graph

Use cases

Find all the distributions with a current version released on 2013 (we want to be sure to use an updated product)

MATCH (year:Date)<-[:RELEASED_ON]-(release:Release)<-[:CURRENT_RELEASE]-(distribution:Distribution)
WHERE year.year = '2013'
RETURN, release.version

Find all the distributions with a particular license (we love open-source)

MATCH (distribution:Distribution)-[:IS_LICENSED_UNDER]->(licence:Licence)
WHERE =~ '.*GPL.*'

Find all the distributions that support Java, .NET and ACID transactions (we need these features)

START java=node:node_auto_index(name='Java'), NET=node:node_auto_index(name='.NET'), AT=node:node_auto_index(type='ACID transactions')
MATCH p=AllShortestPaths(java-[:HAS_API_FOR]-NET)
WITH head(tail(nodes(p))) AS distribution, AT
MATCH (distribution)-[:ALLOWS]->(AT)

Find all the Neo4j’s releases (at this point we are thinking about using Neo4j, but we want to be sure that the project is actively updated)

MATCH (neo:Distribution)-[:CURRENT_RELEASE|:PREVIOUS_RELEASE*..5]->(release:Release)
WHERE = 'Neo4j'
WITH release
MATCH (release)-[:RELEASED_ON]->(date)
RETURN release.version, date.year

Thanks for reading!