graph database: All content tagged as graph database in NoSQL databases and polyglot persistence
Monday, 20 May 2013
Neo4j Blog: Reloading my Beergraph - using an in-graph-alcohol-percentage-index
Rik Van Bruggen about data modeling in Neo4j:
One of the things that spurred the discussion was - probably not coincidentally - the AlcoholPercentage. Many people were expecting that to be a property of the Beerbrand - but instead in my beergraph, I had “pulled it out”. The main reason at the time was more coincidence than anything else, but when you think of it - it’s actually a fantastic thing to “pull things out” and normalise the data model much further than you probably would in a relational model. By making the alcoholpercentage a node of its own, it allowed me to do more interesting queries and pathfinding operations - which led to interesting beer recommendations. Which is what this is all about, right?
I can see where this is going, but I’m not sure I agree it’s the right approach. Basically in this case it works because the domain of the field is both discrete and small. Ideally, though, what you’d actually want is an index that could give you nodes that are “close-to-some value” (e.g.: “give me the beers in the 6.9-7.1 range”)
Original title and link: Neo4j Blog: Reloading my Beergraph - using an in-graph-alcohol-percentage-index (©myNoSQL)
via: http://blog.neo4j.org/2013/05/reloading-my-beergraph-using-in-graph.html
Monday, 13 May 2013
Bootstrapping Neo4j With Spring-Data...without XML
The emphasis is on without XML:
With the maturing of Spring-Data I started porting all my personal projects to use Spring Data for bootstrapping.
Quite a bit of annotations needs, but I’d go with that instead of XML.
Original title and link: Bootstrapping Neo4j With Spring-Data…without XML (©myNoSQL)
via: http://codepitbull.wordpress.com/2013/05/12/bootstrapping-neo4j-with-spring-data-without-xml/
Wednesday, 3 April 2013
A Quick Guide to Testing Spring Data Neo4j With NoSQLUnit
Alex Soto:
Spring Data Neo4j is the project within Spring Data project which provides an extension to the Spring programming model for writing applications that uses Neo4j as graph database. To write tests using NoSQLUnit for Spring Data Neo4j applications, you do need nothing special apart from considering that Spring Data Neo4j uses a special property called type in graph nodes and relationships which stores the fully qualified classname of that entity.
Is there a BigDataUnit framework? My only requirement is to use XML. Heavily.
Original title and link: A Quick Guide to Testing Spring Data Neo4j With NoSQLUnit (©myNoSQL)
via: http://www.javacodegeeks.com/2013/03/testing-spring-data-neo4j-applications-with-nosqlunit.html
Monday, 18 March 2013
Neo4j-Based Bitcoin Block Chain Visualizer
Pretty interesting usage of Neo4j for visualizing Bitcoin block chain:
Source code available on GitHub.
Original title and link: Neo4j-Based Bitcoin Block Chain Visualizer (©myNoSQL)
Tuesday, 12 February 2013
A Human-Readable Jackrabbit Persistence Manager Prototype for Orientdb
Jackrabbit still has a very special place in my heart. I’ve fought it many times, sometimes losing, most of the time winning. But for over 7 years now, it is still the main storage engine serving the content of InfoQ. So this OrientDB engine for Jackrabbit by Thomas Kratz caught my attention:
This has some limitations, as jackrabbit will still access only one node at a time, being able to traverse the graph at the storage level is simply not intended by the whole api. But it works, it’s readable, can be modified at the db level easily.
Original title and link: A Human-Readable Jackrabbit Persistence Manager Prototype for Orientdb (©myNoSQL)
via: http://thomaskratz.blogspot.de/2013/01/a-human-readable-jackrabbit-persistence.html
Tuesday, 5 February 2013
Neo4j Interviews: The Vision, the Business and Enterprise Talk, and the Tech
Over the weekend I’ve watched two interviews with people working on Neo4j. Each of them covers it from a different angle: Ian Robison’s interview is the technical one, while Emil Eifrem is giving more of the vision, business, enterprise interview. Pick the type of topic you like and watch it. Both are great though.
If you like going back in time, I’ve found a couple of old presentations from and interviews with Emil Eifrem:
Original title and link: Neo4j Interviews: The Vision, the Business and Enterprise Talk, and the Tech (©myNoSQL)
Friday, 1 February 2013
Using Treetop and Neo4j Cypher to Simulate Facebook Graph Search
Interesting as an exercise considering Max de Marzi shared all the code on GitHub, but completely unrelated to the breadth and depth of the Facebook Graph Search.
Original title and link: Using Treetop and Neo4j Cypher to Simulate Facebook Graph Search (©myNoSQL)
via: http://maxdemarzi.com/2013/01/28/facebook-graph-search-with-cypher-and-neo4j/
Wednesday, 23 January 2013
Neo Technology Is H… Wait, It’s Building Neo4j-As-A-Service
Neo Technology’s hiring announcement is clear about their intention:
“[…] you will be resonsible for building, managing, and maintaining a 24x7 NOSQL Databases-as-a-Service operation […]”
In the graph databases space, OrientDB is offering a hosting solution NuvolaBase, but I have no numbers about their business so far.
Original title and link: Neo Technology Is H… Wait, It’s Building Neo4j-As-A-Service (©myNoSQL)
Thursday, 17 January 2013
A Comparison of 7 Graph Databases
The main page of InfiniteGraph, a graph database commercialized by Objectivity, features an interesting comparison of 7 graph databases (InfiniteGraph, Neo4j, AllegroGraph, Titan, FlockDB, Dex, OrientDB) based on 16 criteria: licensing, source, scalability, graph model, schema model, API, query method, platforms, consistency, concurrency (distributed processing), partitioning, extensibility, visualizing tools, storage back end/persistency, language, backup/restore.
Unfortunately the image is almost unreadable, but Peter Karussell has extracted the data in a GoogleDoc spreadsheet embedded below.
Wednesday, 16 January 2013
Using Neo4j Graph Database With Ruby
A two part article by Thiago Jackiw providing a brief explanation of what graph databases and Neo4j are and a quick look at 3 Ruby libraries for Neo4j: Neo4j.rb1, Neography2, and Neoid3
This article demonstrated how to install Neo4j and the basic idea of how to integrate it with a Ruby/Rails application using the different solutions available. Even though the examples given here barely scratched the surface of Neo4j, it should hopefully give you enough knowledge and curiosity to start integrating it on your own projects.
Original title and link: Using Neo4j Graph Database With Ruby (©myNoSQL)
Friday, 2 November 2012
Neo Technology Raises Another $11mil for Neo4j Graph Database
Derrick Harris for GigaOm:
Graph database startup Neo Technology has raised another $11 million, providing more fuel to the fire of specialized databases. Whether they’re graph databases organizing data by relationships, or geospatial databases concerned with where stuff is located, everyone is trying capitalize on myriad new data sources available.
According to my calculations this brings Neo Technology at $24.1 millions ($10.6M in Sept.2011 and $2.5 in Oct.2009).
Original title and link: Neo Technology Raises Another $11mil for Neo4j Graph Database (©myNoSQL)
via: http://gigaom.com/data/graph-startup-neo-raises-11m-as-specialized-databases-take-hold/
Saturday, 27 October 2012
Next Neo4j Version Implementing HA Without ZooKeeper
The next version of Neo4j will remove the dependency on ZooKeeper for high availability setups. In a post on Neo4j blog, the team has announced the availability of the 1st milestone of Neo4j 1.9 which already contains the new implementation of Neo4j High Availability Cluster:
With Neo4j 1.9 M01, cluster members communicate directly with each other, based on an implementation of the Paxos consensus protocol for master election.
According to the updated documentation annotated with my own comments:
- Write transactions can be performed on any database instance in a cluster. (nb: writes are performed on the master first, but the cluster does the routing automatically)
- If the master fails a new master will be elected automatically. A new master is elected and started within just a few seconds and during this time no writes can take place (the writes will block or in rare cases throw an exception)
- If the master goes down any running write transaction will be rolled back and new transactions will block or fail until a new master has become available.
- The cluster automatically handles instances becoming unavailable (for example due to network issues), and also makes sure to accept them as members in the cluster when they are available again.
- Transactions are atomic, consistent and durable but eventually propagated out to other slaves. (nb: a transaction includes only the write to the master)
- Updates to slaves are eventual consistent by nature but can be configured to be pushed optimistically from master during commit. (nb: writes to slave will still not be part of the transaction)
- In case there were changes on the master that didn’t get replicated before it failed, there are chances to reach a situation where two different versions exists—if the failed master recovers. This situation is resolved by having the old master dismiss its copy of the data (nb the documentation says move away)
- Reads are highly available and the ability to handle read load scales with more database instances in the cluster.
Original title and link: Next Neo4j Version Implementing HA Without ZooKeeper (©myNoSQL)
Most Popular Articles
- Translate SQL to MongoDB MapReduce
- Tutorial: Getting Started With Cassandra
- CouchDB vs MongoDB: An attempt for a More Informed Comparison
- Cassandra @ Twitter: An Interview with Ryan King
- A Couple of Nice GUI Tools for MongoDB
- NoSQL benchmarks and performance evaluations
- Ehcache: Distributed Cache or NoSQL Store?
- Document Databases Compared: CouchDB, MongoDB, RavenDB
- Quick Review of Existing Graph Databases
- NoSQL Data Modeling

