Thursday, March 3, 2022

Azure Cosmos DB

When to use NoSQL Database?

"If your transactional volumes are reaching extreme levels, such as many thousands of transactions per second, you should consider a distributed NoSQL database" - Microsoft, Cosmos DB documentation

Relational Database

Fixed Schema

Table based structure

Vertical scaling

Provides ACID guarantees (atomicity, consistency, isolation, durability)

Data normalization


NoSQL Databases

Fluid schema

Multiple structures (key-value, graph, document, wide-column)

Horizontal scaling and data partitioning for scalability

Provides BASE (basically available, soft state, eventual consistency) semantics

Non-normalized data


Cosmos DB Benefits

Provides extremely low latency

Provides SLA for throughput, latency, availability and consistency

Support replication

High availability

Enables elastic scalability

Supports multiple consistency options

Integrated Analytics

Region Support

Schema-agnostic

Automatic Indexing

Supports multiple SDKs


Supported Cosmos DB API's

SQL (store data as json data) (container entity - Table)

Cassandra (CQL) (container entity - Table)

MongoDB (container entity - Collection)

Gremlin (Graph database - commonly used in product recommendation and social networks to denote the relationship between items) (container entity - Graph)

Azure Table (container entity - Table)


Throughput and Scaling

Vertical scaling - increase more resource, CPU, memory etc

Horizontal scaling - add more servers



AZ-104

Microsoft Azure is huge and it has hundreds of services underneath its umbrella It's actually going to be quite difficult to comprehend ...