I am used to relational databases – I used to work in Oracle DBS, a little bit with MySQL and currently Microsoft SQL Server. The problem with these databases is that it is hard to easily show relationship between objects.
In the relational DB tables are objects and relation between is either a part of this table or (what makes such schemas more complicated!) additional tables with many-to-many relations.
One of the ideas to solve this issue is to use different approach – graph databases. The ones use structures of graphs to represent and store data. There are three main elements used in them – nodes, properties and edges. Nodes, as it used to be – are objects such as people, accounts, cars. And this is easy to understand.
Properties are details about particular node – for example, about a person we can store property such as name, surname, age.
The connection between nodes are called edges and these represent the relationship between two edges. This is the place where most of the important information is really stored. And this is also the main difference from relational databases.
I would like to investigate this topic a little bit more deeper so I planned to play with Neo4j database (I know it’s in Java, but thanks to REST web API we can access it through many programming languages and obviously I will use .NET platform) – which is an open source graph database which supports ACID.