Skip to main content

Azure Tools - Azure CosmosDB Emulator

Highlights of  Azure CosmosDB emulator
Azure Services: Azure CosmosDB
Cost: free of use
How is delivered: Windows Service or Docker container, exposing web endpoint on a local port
Top 3 features:
  • #1 Docker support
  • #2 A web explorer similar with the one available inside Azure Portal for local documents 
  • #3 The option to delete all the data with only one click
Pain points:
  • #1 No consistency level supported
  • #2 Limited to 25 fixed containers or 5 unlimited containers
  • #3 Lack of support for other APIs 
Credits: Azure CosmosDB Team

When I first discovered the emulator support for Azure CosmosDB I was super excited. Azure CosmosDB is not cheap and for development teams is always a challenge when they need to share a data repository.
Usually, each person in the team is working on different areas of the project and needs a different data setup. By having an emulator the team has the possibility to focus on their own area and test it locally without deploying their own instance of Azure Cosmos DB database or container. Not only the development is smooth, but also the running cost of the development environment is lower.

As you can see above, the interface is clean and provides the things that you need in the first moment when you start the emulator - the connection string to connect to it. The Explorer is similar to the one that we have inside Azure Portal, allowing us to do any type of operations inside our containers. We even have the ability to define functions, triggers and stored procedures.
The support of writing queries directly inside the browser it's nice and I used with success to understand some concepts related to how to write queries. You can save the queries defined in the emulator, but we aware that they are saved inside Azure CosmosDB containers. This will generate an additional cost (~$0.77/day) but can be used as a common query repository by the team.
There is an option that allows us to reset all the data stored inside the emulator. Useful during development phases. There is also the ability to upload content from JSON, for cases when you need to prepare your local emulator with fresh data.

The speed and the performance of the emulator are not high, but it is more than enough for development and to play around. Locally I don't see an issue with lack of support of consistency level especially because you have only one instance - no replica.

To be able to activate emulators for Gremlin API, Cassandra API, Table API or MongoDB emulator you need to start the emulator from the command line and specify "/EmulatorMongoDBEndpoint" as the parameter for MongoDB. A similar thing you need to do if you want the emulator for the other APIs. Except for the SQL API that is fully supported, the rest of the APIs are partially supported.
The Docker support for the emulator is awesome and enable you to use the emulator in different and configurations.


Comments

Popular posts from this blog

Windows Docker Containers can make WIN32 API calls, use COM and ASP.NET WebForms

After the last post , I received two interesting questions related to Docker and Windows. People were interested if we do Win32 API calls from a Docker container and if there is support for COM. WIN32 Support To test calls to WIN32 API, let’s try to populate SYSTEM_INFO class. [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } ... [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); ... SYSTEM_INFO pSI = new SYSTEM_INFO(...

How to audit an Azure Cosmos DB

In this post, we will talk about how we can audit an Azure Cosmos DB database. Before jumping into the problem let us define the business requirement: As an Administrator I want to be able to audit all changes that were done to specific collection inside my Azure Cosmos DB. The requirement is simple, but can be a little tricky to implement fully. First of all when you are using Azure Cosmos DB or any other storage solution there are 99% odds that you’ll have more than one system that writes data to it. This means that you have or not have control on the systems that are doing any create/update/delete operations. Solution 1: Diagnostic Logs Cosmos DB allows us activate diagnostics logs and stream the output a storage account for achieving to other systems like Event Hub or Log Analytics. This would allow us to have information related to who, when, what, response code and how the access operation to our Cosmos DB was done. Beside this there is a field that specifies what was th...

Cloud Myths: Cloud is Cheaper (Pill 1 of 5 / Cloud Pills)

Cloud Myths: Cloud is Cheaper (Pill 1 of 5 / Cloud Pills) The idea that moving to the cloud reduces the costs is a common misconception. The cloud infrastructure provides flexibility, scalability, and better CAPEX, but it does not guarantee lower costs without proper optimisation and management of the cloud services and infrastructure. Idle and unused resources, overprovisioning, oversize databases, and unnecessary data transfer can increase running costs. The regional pricing mode, multi-cloud complexity, and cost variety add extra complexity to the cost function. Cloud adoption without a cost governance strategy can result in unexpected expenses. Improper usage, combined with a pay-as-you-go model, can result in a nightmare for business stakeholders who cannot track and manage the monthly costs. Cloud-native services such as AI services, managed databases, and analytics platforms are powerful, provide out-of-the-shelve capabilities, and increase business agility and innovation. H...