 Hi, everyone. My name is Deborah Chen, and I'm a Program Manager on the Azure Cosmos DB team. I'm really excited today to share with you what's new for developers in Azure Cosmos DB. For those of you new to the service, Cosmos DB is a globally distributed multi-model database service that allows you to read and write data from any Azure region, with single-digit millisecond latency for both reads and writes. The service offers high availability and enterprise-level SLAs around consistency, availability, throughput, and latency. Now let's dive into the updates. First, we're really excited to announce the .NET SDK version 3.0, which is now in preview. This new SDK targets .NET standard 2.0, has a new intuitive object model designed to be easier to use, support for streams and performance improvements, and finally, but last but not least, is open-source on GitHub. We're also excited to announce changes to our database-level throughput pricing. We're lowering their entry point by 25x to just $25 a month, to enable you to make a new database, put as many containers as you want inside, and have them all share the same throughput of the database. Finally, we're releasing the Azure Pipeline Cosmos DB Emulator Build Task, which allows you to run tests against Cosmos DB Emulator in your CI-CD pipelines. Now let's dive into the demo. Here, I have a .NET Core Console app that I've set up to use the new Cosmos DB.NET SDK. After some setup to get the account endpoint, the primary key, set up the local database and container references that I'll use to reference the resources I create on the server and set the name of the database and container I'm about to create. Let's start and write some code. Going here, I can start creating a new database by typing this.database equals this.CosmosClient, which is the entry point to interact with the Cosmos DB service. Off this Cosmos Client, I see there's a new databases property off which I can access every method relevant to databases. I'll use the create database if not exist async method, give it the database ID, put a weight in front of it, and now in just one line, we've created a new database with Cosmos DB. Now with a new SDK, we've updated the object model and API surface to be more modular. So now we have a databases object, a containers object and items, each with their own relevant methods. To truly see that, if I were to create a new container, I can go to this.database, referencing the database we just created, reference its containers, and call create containers if not exist async. In the same way, if I want to add an item to that container, I first reference the container, reference its items, and then call create item async with a relevant item body. Now that I have this code set up, let's go ahead and run it and actually create the resources in Cosmos DB. So my database container and item having created, and now I'll go to the portal, navigate to data explorer, which is the one-stop shop for viewing all the data in my Cosmos DB containers. Refreshing, I see that the to-do database and to-do container have both been created, and when I go to documents, it's the same item that I just created via that console app. So that's just how easy it is to get started with a new.NET SDK. Excited to get your feedback and see what you think while it's in preview. Now let's take a closer look at this to-do container. When I go to scale and settings, I see that I provision 400 RUs for it. An RU or request unit is an abstract amount of currency that describes how much an operation in Cosmos DB costs. So example, operations are read, writes, and queries. Cosmos DB works at a provision throughput model, which means you tell us how many RUs per second you want guaranteed, and that's what we provide. Today, you can provision throughput in two ways, either at the container level as we've done here, or at the database level. When you provision throughput at the database level, that means that all the containers inside that database can share that same amount of throughput. So for example, if I were to provision a database with 1000 RUs per second, and have five containers inside, all those five containers would share the 1000 RU per second. We're really excited to announce a connect that we're lowering the entry point for database level throughput to just 400 RU per second, which is down 25X from the previous number of 10,000 RU per second. This means you can take advantage of database level throughput for just starting at $25 a month. To enable it, all you have to do when you make a new database is hit this provision throughput checkbox, set it to the throughput you want, I'll set it to the new minimum of 400, and hit okay. As an example, I have a database here already set up called connect database, and it has two containers inside, which are both sharing the combined throughput of the database of 400 RU per second. Now, we also give you the flexibility if you want to still dedicate a guaranteed amount of throughput for a container in this database. All I'd have to do is when I make a new container, say test, this check, this provision dedicated throughput for this collection. So if I wanted this particular collection or container to have 1,000 RU per second, then this would be guaranteed to have 1,000 RU per second. Well, these two containers will share the 400 RU per second. All right. Now that we've covered getting started with the new .NET SDK and database level throughput, let's move on to the dev test experience. Here, I have an ASP.NET web app running against Cosmos DB. But the interesting thing about this web app is it's actually not running against the Cosmos DB service, it's running against the local emulator. I set the endpoint to localhost 8081, and you can see my emulator is running here in my task tray. The emulator runs on Windows machines and allows you to emulate the Cosmos DB service locally, so you can do operations like creating databases, creating containers against it, without incurring any cost on the Cosmos DB service. I can even do things like run unit tests against it. So here I have two unit tests, just testing basic functionality in this app, and I can go ahead and run my tests. Now these tests will create a new container, create a new database, add some items to it, test a query, and these are all running against the local version of the emulator. Now, this is great, you can do all of this today locally, but what about in a CI CD environment? With a new Azure Pipelines Cosmos DB emulator build task, you can now run tests against the emulator in a CI CD pipeline. So here I have a pipeline setup, and all it does is it builds my web app, run some tests, and deploys it to Azure App Service. The only thing I have to do new is add my Cosmos DB emulator build task, which I can get for free on the Azure DevOps marketplace. In my test task, just specify that I want to use the endpoint emitted by the emulator container earlier in this pipeline. Once that's set, I can go ahead and queue my build. While that's queuing, I'll go to a completed build that I ran earlier today. This build was successful in a finish, and you see that during this task, it pulled down an image with a container that already had the Cosmos DB emulator installed, started running it, exposing it to this endpoint, which our tasks down the pipeline can consume. The great thing about this build task is it makes it a lot easier to use Cosmos DB in CI CD. You no longer have to deal with manually setting up a container, and manually setting up the emulator and getting it to run. Now, when I look at my tests, I can see that all the tests passed, and when I go to see which specific tests, we'll see it's actually the same two tests that I was running locally, all running against the Azure Cosmos DB emulator as part of the CI CD pipeline. And of course, as the last step in this pipeline, the app deployed to Azure App Service. So in conclusion, you've just seen the preview of the new .NET SDK for Cosmos DB. Learn how to get started with database level throughput, now lower to just $25 a month, and saw how to use the new Azure Pipelines Cosmos DB emulator build task in your CI CD pipeline. We're really excited to hear your feedback on all these items, and can't wait to see what you build with Cosmos DB. Thank you.