Cosmos DB falls into the “NoSQL” technology group, call it a buzz word if you like but it is very different to classic Relational Databases such as SQL Server. I never really understood why it was labeled NoSQL, if you build a document based data model via the SQL API you actually use SQL like language to query the JSON (from the collection). Moving on, it is an evolution from what used to exist called Document DB. (Cosmos DB sounds way more aggressive and punchy, right?) Recently I have been using it to store JSON documents (Document based data model) in Azure, as a fully managed service, i.e. PaaS and maybe you will use it one day.
What does it offer?
Many things that stand out – Unlimited scale with scale-out features which is based on horizontal partitioning which is server side with no need to implement your own logic, all is needed is a partition key. We all know how tough it can be to implement scale out architectures. It is also based on turnkey global distribution meaning it is very easy to add / remove regions for your Geo-replication needs to support global distribution.
There are 4 data models with varying APIs to call upon.
- Documents – SQL (JSON) or Mongo (BSON) API.
- Key Value – I think of this as a way to move away from Azure Table Storage.
- Graph – Gremlin API.
- Columnar – Cassandra API.
So, next post we will look at creating a Cosmos DB and look into the local emulator.