Monday, 2 December 2013

RavenDB Document Modelling

RavenDB is quite powerful in terms of what you can do with it. It has amazing data storage and replication capabilities that come in handy when you are dealing with a huge data set. Today, we are going to take a look at how you can documents in a RavenDB database in order to get the optimum performance from your database.  This way, you will be able to handle user request in an efficient and reliable manner with little or no need for maintenance.
For one, most people make the error of modeling their data as they would on a typical relational database. Raven is non-relational and using a relational model will not give you the results you desire. Being documented oriented in nature, raven can give you some amazing results when you stick to its nature. There are a number of things that you need to keep in mind when approaching the document oriented nature of raven.

1. RavenDB Documents are not flat
In a raven database, you are not limited to a row like in a relational database. You can store more than just keys and values in your raven database and this can even include complex object graphs. Since you do not need a relation in order to store complex data structures in a raven database, there is little work involved in storing your data. This is due to the fact that we do not need different tables in order to store various data elements in a database. A single document can be used to store as much data as we need in the format we want. This way, we only need a single request to get all the data we need instead of having to look at relations and what not if we were using a relational database. This brings us to the next point.

2. RavenDB is not relational
Using relational concepts in Raven is a mistake most people often make. There is a reason why RavenDB is not relational. For one, it makes it easy to optimize storage and management of documents. You also get to store huge amounts of data which most database have nowadays. With the non-relational nature of RavenDB, each document is treated separately and independently meaning it can be stored anywhere in the system.

With RavenDB, every document is expected to make full sense on its own and you are encouraged to put all the information you require into a single document. Having all the necessary details in a single document enables you to maximize usage of the RavenDB architecture for your data storage purposes and you are able to get more out of your database.

3. Entities and Aggregates
This is something that you need to know in order to fully grasp the document oriented nature of the raven database. Aggregates have several entities and value types controlling access to all the objects that fall within its boundaries. This means that external reference will only refer to the aggregate root and not to the child objects. In RavenDB, the aggregate root is a document. This means that there will be no expensive computation needed in order to go through the aggregate to get to the object we need.

4. Associations Management
RavenDB also makes it easy to have association management by making use of the associated document key and loading the association with the related document when it is needed. This makes it easy to have a huge dataset and still maintain associations between different documents.

Post a Comment