Overview of Azure Cosmos DB
Azure Cosmos DB is a fully managed NoSQL database for modern app development. It is a fully managed service, Azure Cosmos DB takes database administration off your hands with automatic management, updates, and patching. It also handles capacity management with cost-effective serverless and automatic scaling options that respond to application needs to match capacity with demand.
End-to-end database management, with serverless and automatic scaling matching your application and TCO needs. Cost-effective options for unpredictable or sporadic workloads of any size or scale, enabling developers to get started easily without having to plan or manage capacity.
- Azure Subscription
- Understanding of NoSQL database
1. Access Azure Cosmos DB
Azure Cosmos DB is one of the best-managed services used for NoSQL. You can see this service in the Databases pane.
2. Configure Azure Cosmos DB API
Azure offers multiple database APIs as per the below image which includes the Core (SQL) API, API for MongoDB, Cassandra API, Gremlin API, and Table API.
These APIs allow your applications to treat Azure Cosmos DB as if it were various other databases technologies, without the overhead of management, and scaling approaches.
2.1 Basics Configuration
For this article we are using Azure Cosmos DB API for MongoDB here we have a few options that we should understand.
- Provisioned Mode: - In provisioned throughput mode, you have to commit to a certain amount of throughput (expressed in Request Units per second) that is provisioned on your databases and containers. The cost of your database operations is then deducted from the number of Request Units available every second.
- Serverless: - Azure Cosmos DB serverless lets you use your Azure Cosmos account in a consumption-based fashion where you are only charged for the Request Units consumed by your database operations and the storage consumed by your data. Serverless containers can serve thousands of requests per second with no minimum charge and no capacity planning required.
2.2 Global Distribution
In the next step, we have the Global Distribution option which is very helpful for High Availability and resilience.
Geo-Redundancy: - It is a globally distributed database system that allows you to read and write data from the local replicas of your database. Azure Cosmos DB transparently replicates the data to all the regions associated with your Cosmos account.
Multi-region Writes: - Cosmos accounts configured with multiple write regions cannot be configured for strong consistency as it is not possible for a distributed system to provide an RPO of zero and an RTO of zero. Additionally, there are no write latency benefits on using strong consistency with multiple write regions because a write to any region must be replicated and committed to all configured regions within the account.
Availability Zones: - Cosmos DB uses AZ which results in increased SLAs, as availability zones are physically separate and provide a distinct power source, network, and cooling. Enabling redundancy across availability zones makes Cosmos DB resilient to entire availability zone outages at the cost of increased charges.
In the Networking tab, we have three options as we have seen those configurations in other Database services. We have all networks, public endpoint, Private endpoint.
The private endpoint will create new DNS endpoints with private IP and in public endpoint DB will be accessible over the internet.
2.4 Backup Policy
In the Backup Policy tab, we have two options periodic and continuous.
Periodic Policy: - In this backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month.
Continuous Policy: - In this policy it allows you to do restore to any point of time within the last 30 days. You can choose this mode while creating the Azure Cosmos DB account.
And another option is to encrypt your data. By default, we have a Service-managed key, but you want more you can go with a Customer-managed key.
2.6 Confirm and Create Azure Cosmos DB
And last, we have configured everything as required then we can validate and review the changes. after validating that we can click Create.
3. Connect Azure Cosmos DB
We can connect Azure Cosmos DB using multiple ways to access data. Azure Cosmos DB Explorer and Azure Storage Explorer are both the most used tools.
You can go to the https://cosmos.azure.com/ here you can use connection strings from Azure Cosmos DB Connection String Pane.
Once you log in and connect you can see the database overview pane. From here you can create Databases and collections. You can select Database throughout here we have two options Auto scale and manual.
4. Create Database and Collection
In the same way, you can create collections. You can see options as per the below image.
5. Using Local Emulator for Azure Cosmos DB for development
The Azure Cosmos DB Emulator provides a local environment that emulates the Azure Cosmos DB service for development purposes. Using the Azure Cosmos DB Emulator, you can develop and test your application locally, without creating an Azure subscription or incurring any costs.
you can download it using the below link https://aka.ms/cosmosdb-emulator
Using the Explorer option, you can create the database in the same way we did for Cosmos DB that we deployed in subscription.
As per the article, we understood that Azure Cosmos DB is managed service provided by Azure. after reading this article you would understand how you can deploy Cosmos DB in Azure with required configurations.
also, we got an understanding of how we can connect to Azure Cosmos DB and as well we can deploy and test on the local machine before deploying it to production.
He possesses over 5 years of experience as a Cloud Consultant, specializing in Azure DevOps and CloudLinux. With his expertise, he implements and optimizes cloud solutions, ensuring seamless operations and efficient resource management. You can connect with him on LinkedIn.