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(...

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine: threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration: TeamCity .NET 4.51 EF 6.0.2 VS2013 It see...

Navigating Cloud Strategy after Azure Central US Region Outage

 Looking back, July 19, 2024, was challenging for customers using Microsoft Azure or Windows machines. Two major outages affected customers using CrowdStrike Falcon or Microsoft Azure computation resources in the Central US. These two outages affected many people and put many businesses on pause for a few hours or even days. The overlap of these two issues was a nightmare for travellers. In addition to blue screens in the airport terminals, they could not get additional information from the airport website, airline personnel, or the support line because they were affected by the outage in the Central US region or the CrowdStrike outage.   But what happened in reality? A faulty CrowdStrike update affected Windows computers globally, from airports and healthcare to small businesses, affecting over 8.5m computers. Even if the Falson Sensor software defect was identified and a fix deployed shortly after, the recovery took longer. In parallel with CrowdStrike, Microsoft provi...