It’s been a few weeks since Ignite 2019 ended and I wanted to do a quick recap of the major (and some minor) announcements around Cosmos DB
1. AutoPilot
By far the biggest new feature for me was the announcement of Auto Pilot which is the new official way of auto scale for CosmosDB containers.
With this new feature you can specify a min and max throughput that you want your collection to elastically scale between based on load. You can read all the details about it in the official docs
2. Transactions
Starting with .NET SDK 3.4.0 there is native support for transactions which means you now can configure and run transactions from your code and not be limited to the JavaScript Stored Procedures.
3. Batch
Previously you had to either use external tools such as the Document DB Data Migration Tool or libraries as Bulk Executor library or write your own (like I did in my CosmosDB SDK Wrapper). But with the new .NET SDK 3.4.0 SDK the bulk imports are a built in feature making it easier to do an initial load of your Cosmos repository.
3. Aggregation performance improvements
Running Count or GroupBy queries is now a lot faster and less expensive RU wise. This was enables via updates in the core indexing service and you will see the benefits without any code changes.
4. Notebooks
Probably the biggest feature if you’re coming to cosmos from the Data Analytics side is the built in Jupyter notebooks integration which allows you to analyze and visualize your data in real time, directly from the Azure Data Explorer. More details on the official docs.
5. Private link
Still in Preview, the private link will allow you to limit access to your Cosmos DB to a VNET or IP within your network bounds vastly increasing security by limiting connectivity to internal traffic only.
6. DevOps improvements
New AZ CLI and PowerShell cmdlets were added to make it easier to integrate your CosmosDB management directly into your DevOps pipeline. Tasks such as scaling a collection, updating an indexing policy or managing collections is made easier with direct native commands rather than the generic commands with custom JSON payload before.