Azure DocumentDB – Point in time Backups

I have been reading and learning about DocumentDB the last month. I like it more and more…

I wrote a small DocumentDB C# 6.0 library that I want to share with you. The library offers a service to perform common requests to DocumentDB and a service to create and restore point in time backups.

A complete Microsoft backup solution is already planned: http://feedback.azure.com/forums/263030-documentdb

Wait… why did you write a DocumentDB backup solution if Microsoft said that they will implement it?

The reason why I wrote this quick and dirty point in time backup solution is that I want to use DocumentDB today and I don’t want to lose my data Sonrisa! I now that the database in Azure is safe but… what my application does something wrong and the data stored in azure gets damaged? I want to have the possibility to restore the data I had 1 hour ago, or yesterday, or last week…

In this first version only the documents are backed up.

You can find the library on my github:
https://github.com/softwarejc/documentdb-backups-csharp

Class Diagram

DocumentDB.Framework.classdiagram

How to use the library

We can extend the DocumentDBService class to define services to work with our collections:

Service definition:

image

How to use the service:

image

Fell free to leave me a comment and/or send me a pull request on Github!

Azure DocumentDB and C#

The goal of this post is to write a C# sample application to perform basic requests to Azure DocumentDB:  Create, Read, Update, Delete and Find documents.

You can find the code on my github: https://github.com/softwarejc/documentdb

Relational databases have been the dominant approach to store data for decades and they will probably be used for a very long time. However a lot of modern applications work with JSON, a format that does not fit naturally in a relational system.

NoSQL databases came to solve this problem and to improve the scalability of relational databases.  NoSQL also allows working with data that change fast without having to change the database.

There are different types of NoSQL databases:

  • Document stores: MongoDB, Azure DocumentDB
  • Key/Value stores: Riak
  • Column stores: Cassandra
  • Big data analytics: HDInsight, Hadoop

The focus of this post is the document store offered by Microsoft: Azure DocumentDB.

You can read more about MongoDB vs DocumentDB here: http://justazure.com/mongodb-vs-azure-documentdb/

Create a DocumentDB in Azure

The creation of a DocumentDB is very straight forward.

Scott Hanselman explains it very good in this video:

https://channel9.msdn.com/Blogs/Windows-Azure/Create-DocumentDB-on-Azure

You can read the about pricing information here:

http://azure.microsoft.com/en-us/pricing/details/documentdb/

How to use DocumentDB with C#

DocumentDB officially supports the following programming languages:

  • .NET
  • Node.js
  • Javascript
  • Python
  • Java

We will be using .NET C# 6.

The first thing that we have to do is to add a Nuget package that will do part of the job for us: Microsoft.Azure.DocumentDB:

Nuget

Continue reading