The graph database and the NoSQL movement are picking up steam by providing alternatives to the traditional relational databases that so many developers are used to. At this point some developers will
Relational databases are great at what they're good at. In fact, there was a popularity contest between relational databases, graph databases, and a couple other contenders in the eighties. Relational won the contest hands down.
Relational databases are great at what they're good at ... but there are limiting factors
But there are limiting factors to relational databases. One of the limiting factors with relational databases is that they are rigid and difficult to chunk for distributed computing systems. Another is that relational databases are sometimes ill equipped to represent the actual associations between pieces of information.
The resurgence of the graph database is an effort to overcome these limitations. The relational database is based on a somewhat hierarchical system of tables, columns, and rows. Graph databases are based on graph theory. Graph databases employ nodes, properties, and edges.
Nodes are very similar in nature to the objects that object-oriented programmers will be familiar with. Nodes represent entities such as people, businesses, accounts, or any other item you might want to keep track of.
Properties are pertinent information that relate to nodes. For instance, if "SearchSOA" were one of our nodes, we might have it tied to properties such as "website", "SOA related", or "word that starts with the letter 'S'", depending on which aspects of "SearchSOA" are pertinent to our particular database.
Edges are the lines that connect nodes to nodes or nodes to properties and they represent the relationship between the two. Most of the important information is really stored in the edges. Meaningful patterns emerge when you examine the connections and interconnections of nodes properties and edges.
The resurgence of the graph database is an effort to overcome these limitations.
Graph databases are constantly in flux. New nodes, properties and edges are
constantly added and removed as situations change – which is why one of the most prominent uses of
graph databases is in social networking. This flexibility also helps out a lot when it comes to
distributed computing. The malleable nature of the graph database meshes well with the cloud.
More information about graph databases:
Wikipedia entry for "Graph database"
How to use Facebook's Open Graph API to program the Web
Youtube video: Need a graph database like Twitter is built on?
Databases: relational vs object vs graph vs document
Graph Databases, NOSQL and Neo4j
This was first published in November 2010