使用 SQL API 和 Azure 门户通过 Azure Cosmos DB 构建 .NET Web 应用
本快速入门演示如何使用 Azure 门户创建 Azure Cosmos DB SQL API 帐户、文档数据库和集合。然后,你将构建和部署一个基于 SQL .NET API 的待办事项列表 Web 应用,如下图所示。
Azure Cosmos DB 是 Microsoft 的全局分布式多模型数据库服务。你可以快速创建和查询文档、键/值和图数据库,所有这些都受益于 Azure Cosmos DB 核心的全局分布式和水平扩展功能。
本快速入门演示如何使用 Azure 门户创建 Azure Cosmos DB SQL API 帐户、文档数据库和集合。然后,你将构建和部署一个基于 SQL .NET API 的待办事项列表 Web 应用,如下图所示。
必备组件
如果你尚未安装 Visual Studio 2017,可以下载并使用 **免费** 的 Visual Studio 2017 社区版。请确保在 Visual Studio 安装过程中启用 **Azure 开发**。
如果你没有 Azure 订阅,请在开始之前创建一个 免费帐户。
你可以 免费试用 Azure Cosmos DB,无需 Azure 订阅、免费且无承诺。或者,你可以使用 Azure Cosmos DB 模拟器,其 URI 为 https://:8081。主密钥在 身份验证请求 中提供。
创建数据库帐户
- 在新浏览器窗口中,登录 Azure 门户。
-
选择创建资源 > 数据库 > Azure Cosmos DB。
-
在创建 Azure Cosmos DB 帐户页面上,输入新的 Azure Cosmos DB 帐户的基本设置。
设置 值 描述 订阅 您的订阅 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。 资源组 新建
然后输入与 ID 中提供的相同的唯一名称选择新建。然后为您的帐户输入新的资源组名称。为简单起见,请使用与您的 ID 相同的名称。 科目名称 输入唯一名称 输入一个唯一名称来标识您的 Azure Cosmos DB 帐户。由于 documents.azure.com 会附加到您提供的 ID 以创建 URI,因此请使用唯一 ID。
ID 只能包含小写字母、数字和连字符 (-) 字符。其长度必须在 3 到 31 个字符之间。API Core(SQL) API 决定要创建的帐户类型。Azure Cosmos DB 提供五种 API:文档数据库的 Core (SQL)、图数据库的 Gremlin、文档数据库的 MongoDB、Azure Table 和 Cassandra。目前,你必须为每种 API 创建单独的帐户。
选择Core(SQL),因为在本文中您将创建一个文档数据库并使用 SQL 语法进行查询。
详细了解 SQL API.Location 选择离您的用户最近的区域 选择一个托管您的 Azure Cosmos DB 帐户的地理位置。使用离您的用户最近的位置,以便他们能最快地访问数据。 选择审查+创建。您可以跳过网络和标记部分。
-
帐户创建需要几分钟时间。等待门户显示恭喜!您的 Azure Cosmos DB 帐户已创建页面。
添加集合
现在可以使用 Azure 门户中的 Data Explorer 工具来创建数据库和集合。
-
单击 **Data Explorer** > **New Collection**。
“**Add Collection**”区域显示在最右侧,你可能需要向右滚动才能看到它。
-
在“**Add collection**”页面上,输入新集合的设置。
设置 建议值 描述 Database id Tasks(任务) 为新数据库输入 _Tasks_ 作为名称。数据库名称必须包含 1 到 255 个字符,且不能包含 /, \\, #, ?
或尾随空格。Collection id Items 为你的新集合输入 _Items_ 作为名称。集合 ID 具有与数据库名称相同的字符要求。 Partition key <your key="" partition=""> 输入一个分区键,例如 _/userid_。 吞吐量 400 RU 将吞吐量更改为每秒 400 个请求单位 (RU/s)。如果你想减少延迟,可以在以后纵向扩展吞吐量。 除了上述设置外,你还可以为集合选择性地添加 **Unique keys**。在本例中,我们将其留空。唯一键为开发人员提供了向数据库添加数据完整性层的能力。通过在创建集合时创建唯一键策略,可以确保每个分区键的值唯一。要了解更多信息,请参阅 Azure Cosmos DB 中的唯一键 文章。
点击**确定**。
Data Explorer 显示了新的数据库和集合。
添加示例数据
现在可以使用 Data Explorer 将数据添加到你的新集合中。
-
在 Data Explorer 中,新数据库会显示在“Collections”窗格中。展开 **Tasks** 数据库,展开 **Items** 集合,单击 **Documents**,然后单击 **New Documents**。
-
现在向集合添加一个具有以下结构的文档。
{ "id": "1", "category": "personal", "name": "groceries", "description": "Pick up apples and strawberries.", "isComplete": false }
-
在“**Documents**”选项卡中添加 json 后,单击“**Save**”。
-
创建并保存另一个文档,在其中插入一个唯一的 `id` 属性值,并根据需要更改其他属性。你的新文档可以具有任何结构,因为 Azure Cosmos DB 对你的数据不强制执行任何架构。
查询你的数据
现在可以使用 Data Explorer 中的查询来检索和筛选你的数据。
-
注意,默认情况下,查询设置为 `SELECT * FROM c`。此默认查询检索并显示集合中的所有文档。
-
停留在“**Documents**”选项卡上,通过单击“**Edit Filter**”按钮修改查询,在查询谓词框中添加 `ORDER BY c._ts DESC`,然后单击“**Apply Filter**”。
此修改后的查询按时间戳降序排列文档,因此你的第二个文档现在排在第一个。如果你熟悉 SQL 语法,可以在此框中输入任何支持的 SQL 查询。
我们在 Data Explorer 中的工作到此结束。在继续进行代码工作之前,请注意,你还可以使用 Data Explorer 创建存储过程、UDF 和触发器来执行服务器端业务逻辑以及扩展吞吐量。Data Explorer 暴露了 API 中所有内置的程序化数据访问功能,但提供了对 Azure 门户中数据的便捷访问。
克隆示例应用程序
现在让我们切换到代码工作。让我们从 GitHub 克隆一个 SQL API 应用,设置连接字符串,然后运行它。你将看到以编程方式处理数据的简便性。
-
打开命令提示符,创建一个名为 git-samples 的新文件夹,然后关闭命令提示符。
md "C:\git-samples"
-
打开一个 git 终端窗口(例如 git bash),并使用 `cd` 命令更改到新文件夹以安装示例应用。
cd "C:\git-samples"
-
运行以下命令克隆示例存储库。此命令会在你的计算机上创建一个示例应用的副本。
git clone https://github.com/Azure-Samples/documentdb-dotnet-todo-app.git
-
然后,在 Visual Studio 中打开 todo 解决方案文件。
审阅代码
此步骤是可选的。如果你有兴趣了解代码中如何创建数据库资源,可以审阅以下代码片段。否则,你可以跳到 更新连接字符串。
以下代码片段均来自 _DocumentDBRepository.cs_ 文件。
-
`DocumentClient` 在第 76 行初始化。
client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["endpoint"]), ConfigurationManager.AppSettings["authKey"]);
-
新数据库在第 91 行创建。
await client.CreateDatabaseAsync(new Database { Id = DatabaseId });
-
新集合在第 110 行创建。
await client.CreateDocumentCollectionAsync( UriFactory.CreateDatabaseUri(DatabaseId), new DocumentCollection { Id = CollectionId }, new RequestOptions { OfferThroughput = 400 });
更新连接字符串
现在返回 Azure 门户以获取你的连接字符串信息,并将其复制到应用中。
-
在 Azure 门户中,在你的 Azure Cosmos DB 帐户的左导航栏中选择 **Keys**,然后选择 **Read-write Keys**。你将使用屏幕右侧的复制按钮将 URI 和 Primary Key 复制到下一步的 web.config 文件中。
-
在 Visual Studio 2017 中,打开 web.config 文件。
-
从门户中复制你的 URI 值(使用复制按钮),并将其设为 web.config 中 endpoint 键的值。
<add key="endpoint" value="FILLME" />
-
然后从门户复制你的 PRIMARY KEY 值,并将其设为 web.config 中 authKey 的值。
<add key="authKey" value="FILLME" />
-
然后更新 database 的值以匹配你之前创建的数据库的名称。你现在已将应用更新为与 Azure Cosmos DB 通信所需的所有信息。
<add key="database" value="Tasks" />
运行 Web 应用
-
在 Visual Studio 中,右键单击 **Solution Explorer** 中的项目,然后选择 **Manage NuGet Packages**。
-
在 NuGet **Browse** 框中,键入 _DocumentDB_。
-
从结果中安装 **Microsoft.Azure.DocumentDB** 库。这将安装 Microsoft.Azure.DocumentDB 包以及所有依赖项。
-
按 CTRL + F5 运行应用程序。你的应用将在浏览器中显示。
-
在浏览器中选择 **Create New**,然后在你的待办事项应用中创建几个新任务。
现在你可以返回 Data Explorer,查看、查询、修改并处理这些新数据。
在 Azure 门户中审阅 SLA
帐户中资源的吞吐量、存储、可用性、延迟和一致性在 Azure 门户中进行监控。让我们快速查看这些指标。
-
在导航菜单中单击 **Metrics**。
-
单击每个选项卡,以便你了解 Azure Cosmos DB 提供的指标。
与 Azure Cosmos DB 服务级别协议 (SLA) 关联的每个图表都提供一条线,显示是否违反了任何 SLA。Azure Cosmos DB 通过这一系列指标使其 SLA 的监控透明化。
清理资源
如果你不打算继续使用此应用,请使用以下步骤删除此快速入门创建的所有资源,以免产生任何费用。
-
在 Azure 门户的左侧,选择 **Resource groups**,然后选择你创建的资源组。
如果左侧菜单已折叠,请单击
展开它。
-
在新窗口中选择资源组,然后单击 **Delete resource group**。
-
在新窗口中,键入要删除的资源组的名称,然后单击 **Delete**。