Data has traditionally been represented using tables. When the need came to connect tables, the relational database was born. But the underlying representation was still a table – except there were constraints to ensure the relationships fit.The relational database is great to represent data which has a fixed structure. But as soon as you introduce an ever changing structure which extends infinitely, the relational database looks awkward and hard to explain.
Many sets of data are now showing the characteristics that make it tough to deal with in relational terms alone. In my opinion the biggest drawback of the relational system is the inherent lack of objectivity (as in Object orientation). It becomes very hard to represent real life phenomena easily with relations.
One such situation is the Social Network. Each node is an entity with various characteristics and these characteristics are dynamic and ever increasing. Also, each entity is related to more and more other entities every day. The types of relationships are different each time. You might have friends, family, boss, teacher, acquaintance, girlfriend etc. And this list can keep stretching on till you kick the bucket. Each turn of events gives you a new type of relationship – married to, father of and so on…
To describe that kind of a system easily and make traversing through this insane web of people easy – we can use graph databases. Cool thing which I didn’t think existed to such a great extent till recently.
The nice things I found:
An Open Source NoSQL Graph Database
A graph based programming language.