使用 Azure Cosmos DB 和 Azure Kubernetes Service 为智能应用提供动力:多模型数据库
在我们系列的第二部分中,我们将探索多模型数据库为智能应用提供的强大功能,以及它们与 Azure Cosmos DB 和 Azure Kubernetes Service (AKS) 的集成。
在本周的第一个主题中,我们创建了一个智能应用程序,帮助我们分析图像并提取有价值的数据。我们构建了一个 Python Web API,用于执行光学字符识别 (OCR),利用Azure AI 视觉对上传到应用程序的图像进行处理,并使用Azure Kubernetes 服务 (AKS) 进行托管。
在本周的第二个主题中,我们将探讨 Azure Cosmos DB 对多模型数据库的支持如何提供数据建模、可扩展性和性能优化方面的灵活性——这对于以多种格式存储、索引和查询数据至关重要。
揭秘多模型数据库和 Cosmos DB
多模型数据库允许我们以多种格式存储和处理数据,包括关系数据、JSON 文档、键值对、空间数据和图。它们简化了开发,减少了数据集成问题,并支持更全面的数据分析,从而带来有价值的见解。
以下是使用多模型数据库的一些好处:
- 可扩展性和性能 — 多模型数据库允许我们根据不同的格式塑造数据。我们可以根据应用程序定制这些数据库,将数据分布在集群中,以支持高效、平滑的扩展。此外,它们还支持智能索引、缓存和查询优化,以确保快速高效的数据访问,即使处理复杂查询也能胜任。
- 多功能性 — 多模型数据库通过在统一平台内适应不同的数据类型和结构来支持多功能性。与传统数据库不同,它们无缝集成了各种数据格式的存储和检索,使我们能够动态建模和管理复杂信息。
- 数据处理和转换优势 — 由于多模型数据库支持不同的数据结构,因此它可以轻松处理结构化、半结构化和非结构化数据。这些数据库在处理多样化和非结构化数据的应用程序中提供了变革性的优势。它们管理各种数据类型的能力确保了全面而灵活的数据存储、检索和分析方法。因此,多模型数据库实现了简化的开发、简化的集成和灵活的查询。
- OCR 分析 — 多模型数据库是管理 OCR 分析中多样化数据的复杂需求的宝贵资产。这种数据处理的灵活性意味着 OCR 结果的有效存储和检索,从而实现复杂的查询,揭示各种数据类型中更深层次的见解。
Azure Cosmos DB 是 Azure 的顶级多模型数据库服务,兼容各种流行的数据模型和 API。它轻松处理大量数据类型,为开发人员提供了一个统一的平台,适用于各种应用程序。
Cosmos DB 支持多种 API——包括本机 NoSQL 和 MongoDB、Apache Cassandra、Gremlin 和 Table 的开源 API——可实现现有应用程序的平稳过渡和集成,并有助于构建新应用程序。这种数据建模的适应性确保了快速调整以适应不断变化的需求,保持低延迟、高可用性和全球分发。
让我们探索多模型数据库在智能应用程序中的强大功能。
使用 Cosmos DB 和 AKS 创建多模型数据库
在以下部分中,我们将逐步介绍 Azure Cosmos DB 如何处理来自 OCR 分析的非结构化数据,并为托管在 AKS 中的智能应用程序提供多模型数据库。
必备组件
要学习本教程,请确保您已具备以下条件:
- 阅读本周两部分文章的第一个主题。
- 已安装 Python 3.8 或更高版本。
- 已安装 VS Code 或其他用于编写 Python 代码的集成开发环境 (IDE)。
- 已下载示例 Python 应用程序。
- 安装了 pip,即 Python 的包管理器。
- 一个免费的 Azure 帐户。如果您还没有,请注册。
- Azure 命令行接口 (CLI)。
要查看本教程的最终项目,请查阅完整代码。
解决方案架构
下图展示了本文的目标解决方案的架构。
创建 Azure Cosmos DB for NoSQL 帐户
本节提供在 AKS 环境中使用 Cosmos DB 设置多模型数据库的分步说明。我们将重点关注准备、设计和配置阶段。
请注意,Azure Cosmos DB for NoSQL 帐户与您的 Azure 帐户无关。它是 Microsoft Azure 的数据库服务,用于创建、管理和扩展全球分布式多模型数据库。
Azure Cosmos DB 帐户提供了一组数据库、容器和其他项。它还提供了一个终结点,方便各种工具和 SDK 的连接,从而能够在 Azure Cosmos DB 中执行操作。要更深入地了解 Azure Cosmos DB 中的资产,请参阅Azure Cosmos DB 资源模型。
让我们使用适用于 NoSQL 的 API 创建一个 Azure Cosmos DB 帐户。首先,登录到 Azure 门户。从 Azure 门户菜单或主页中,选择 创建资源。
在“创建资源”页面上,搜索“Azure Cosmos DB”。
结果出现后,找到 Azure Cosmos DB 服务,然后单击 创建。
接下来,您将看到如下所示的 Azure Cosmos DB 服务页面:
API 决定要创建的帐户类型。选择 适用于 NoSQL 的 Azure Cosmos DB API,然后单击 创建。
到达 创建 Azure Cosmos DB 帐户 页面时,输入以下新帐户设置,然后单击 审核 + 创建。
- 资源组:computer-vision
- 帐户名称:这应该对您是唯一的。
- 容量模式:无服务器
最后,检查您的设置并单击 创建 按钮。
接下来,等待几分钟,直到 Azure 创建帐户,然后单击 转到资源 按钮。等待门户显示您的新 Cosmos DB 帐户的概述。
我们仍然需要创建 NoSQL 数据库。因此,在侧边栏上选择 数据资源管理器。然后选择 新建容器 下拉菜单并选择 新建数据库
接下来,将“IntelligentAppDB
”作为 数据库 ID,然后单击 确定
现在,选择 IntelligentAppDB 数据库,点击省略号 (...) 图标,然后点击 新建容器 选项
提供“ImageAnalysisContainer
”作为 容器 ID,并提供“/id
”作为分区键。然后,点击 确定 保存容器。
重复上一步,创建一个新容器。提供“AggregateResultsContainer
”作为 容器 ID,并提供“/id
”作为 分区键。然后点击 确定 保存数据库。
现在,您的数据库和容器结构应如下图所示:
我们来回顾一下这个 Cosmos DB 设置的元素:
IntelligentAppDB
是 Cosmos DB 中的一个数据库,用作分组与我们的智能应用程序相关的相关数据的高级容器。AggregateResultsContainer
是IntelligentAppDB
数据库中的一个容器。容器是 Cosmos DB 中存储数据的地方,而这个特定容器则存储从智能应用程序生成的聚合结果相关数据。ImageAnalysisContainer
是同一IntelligentAppDB
数据库中的另一个容器。它专门用于存储 Azure AI Vision 生成的 OCR 分析相关数据。
将 OCR 数据加载到多模型数据库中
一旦我们创建了 Cosmos DB 帐户并配置了容器,我们就可以使用 Azure Cosmos DB API 以及适当的主机 URI 和密钥来访问它们。您可以通过在侧边栏中选择 密钥 来找到这些凭据,如下图所示:
配置智能应用程序以使用 Cosmos DB
现在,我们必须为应用程序提供 Cosmos DB 数据库凭据。我们将使用在本系列第一部分中创建的部署配置文件中的环境变量来完成此操作。
打开 _deployment.yml_ 文件(在 _Deployment_ 文件夹中),并添加以下与您的 Cosmos DB 帐户信息匹配的环境变量:
- name: COSMOS_ACCOUNT_CONNECTION_STRING
value: <YOUR-COSMOS-ACCOUNT-PRIMARY-CONNECTION-STRING>
- name: COSMOS_ACCOUNT_HOST
value: <YOUR-COSMOS-ACCOUNT-URI>
- name: COSMOS_ACCOUNT_KEY
value: <YOUR-COSMOS-ACCOUNT-PRIMARY-KEY>
- name: COSMOS_DATABASE_ID
value: IntelligentAppDB
- name: COSMOS_IMAGE_ANALYSIS_CONTAINER_ID
value: ImageAnalysisContainer
- name: COSMOS_AGGREGATE_RESULTS_CONTAINER_ID
value: AggregateResultsContainer
然后,打开 _docker-compose.yml_ 文件并添加以下环境变量,复制您上面定义的相同值
- COSMOS_ACCOUNT_CONNECTION_STRING=<YOUR-COSMOS-ACCOUNT-PRIMARY-CONNECTION-STRING>
- COSMOS_ACCOUNT_HOST=<YOUR-COSMOS-ACCOUNT-URI>
- COSMOS_ACCOUNT_KEY=<YOUR-COSMOS-ACCOUNT-PRIMARY-KEY>
- COSMOS_DATABASE_ID=IntelligentAppDB
- COSMOS_IMAGE_ANALYSIS_CONTAINER_ID=ImageAnalysisContainer
- COSMOS_AGGREGATE_RESULTS_CONTAINER_ID=AggregateResultsContainer
多样化数据与 Cosmos DB:完美匹配
OCR 数据多样化且通常非结构化的性质与 Azure Cosmos DB for NoSQL 等多模型数据库的灵活结构完美匹配。OCR 数据通常包含多种文档类型、不同的布局、语言和格式样式,这使得强制执行严格的架构本身就具有挑战性。
下图显示了我们将在本文中遇到的各种数据布局。左图显示了**来自 OCR 分析的数据**,其中包含图像的 AI 生成描述,以及读取的字符及其在图像中的位置。右图显示了**来自聚合的数据**——对读取的数字执行的数值操作。
实现 CosmosDBHelper 类
我们需要一个 Python 类来提供与 Azure Cosmos DB 服务交互的便捷方式。它将封装在 ImageAnalysisContainer
和 AggregateResultsContainer
中创建和管理文档所需的操作。
让我们在项目根文件夹中创建一个名为 _CosmosDBHelper.py_ 的文件,其内容如下:
import os
import azure.cosmos.cosmos_client as cosmos_client
class CosmosDBHelper:
def __init__(self):
self.cosmos_database_id = os.environ["COSMOS_DATABASE_ID"]
self.cosmos_image_analysis_container_id = os.environ["COSMOS_IMAGE_ANALYSIS_CONTAINER_ID"]
self.cosmos_aggregate_results_container_id = os.environ["COSMOS_AGGREGATE_RESULTS_CONTAINER_ID"]
cosmos_account_host = os.environ["COSMOS_ACCOUNT_HOST"]
cosmos_account_key = os.environ["COSMOS_ACCOUNT_KEY"]
self.client = cosmos_client.CosmosClient(cosmos_account_host, {'masterKey': cosmos_account_key})
self.db = self.client.get_database_client(self.cosmos_database_id)
self.image_analysis_container = self.db.get_container_client(self.cosmos_image_analysis_container_id)
self.aggregate_results_container = self.db.get_container_client(self.cosmos_aggregate_results_container_id)
def create_analysis(self, document):
return self.image_analysis_container.upsert_item(document)
def create_aggregate_result(self, inserted_id, aggregate_result):
entity = {
"id": inserted_id,
"sum": float(aggregate_result["sum"]),
"average": float(aggregate_result["average"]),
"median": float(aggregate_result["median"]),
"min": float(aggregate_result["min"]),
"max": float(aggregate_result["max"])
}
return self.aggregate_results_container.upsert_item(entity)
让我们一步一步地分解代码,详细说明将 OCR 提取的数据传输到 Cosmos DB 数据库的过程。
文件开头导入的 azure.cosmos.cosmos_client
模块表示适用于 Python 的 Azure Cosmos DB for NoSQL 客户端库。我们使用它与 Azure Cosmos DB 服务交互。
CosmosDBHelper
类构造函数初始化类实例,并从我们在上一节中配置的环境变量中检索配置值:
COSMOS_DATABASE_ID
— Cosmos DB 数据库的 IDCOSMOS_IMAGE_ANALYSIS_CONTAINER_ID
— 用于存储图像分析文档的容器 IDCOSMOS_AGGREGATE_RESULTS_CONTAINER_ID
— 用于存储聚合结果文档的容器 IDCOSMOS_ACCOUNT_HOST
— Cosmos DB 帐户的主机 URLCOSMOS_ACCOUNT_KEY
— Cosmos DB 帐户的身份验证密钥
类构造函数还使用提供的帐户主机和密钥创建了一个 CosmosClient
实例,我们将在下面的方法中使用该实例:
create_analysis
方法将图像分析文档插入或更新到ImageAnalysisContainer
容器中。它接受 `document` 参数,该参数表示要插入或更新的结构化分析数据。此方法首先使用提供的数据库 ID 和之前创建的 Cosmos 客户端实例获取数据库客户端。然后,它使用提供的容器 ID 获取图像分析的容器客户端。最后,create_analysis
方法在容器客户端上调用upsert_item
方法以插入或更新提供的文档。create_aggregate_result
方法将聚合结果文档插入或更新到指定的容器中。它接受两个参数:inserted_id
(文档的 ID)和aggregate_result
(包含聚合数据(例如总和、平均值、中位数、最小值和最大值)的字典)。与上一个方法类似,它获取数据库和容器客户端。最后,create_aggregate_result
使用提供的数据构造一个实体字典,并使用upsert_item
方法将实体插入或更新到AggregateResultsContainer
容器中。
引入新的 OCR 辅助函数
我们需要一些额外的 Python 函数来使用前面解释的 CosmosDBHelper
类处理图像分析结果并将其插入到 Cosmos DB 中。首先,打开本系列第一部分的 _ocr_helper.py_ 文件,并在文件顶部添加这些 import
语句:
import json
from CosmosDBHelper import CosmosDBHelper
接下来,在 _ocr_helper.py_ 文件中找到以下几行:
ocr_result = get_ocr_result(result)
return ocr_result
将这些行替换为:
ocr_result = get_ocr_result(result)
analysis_result = get_image_analysis_result(result, source_image)
ocr_result["analysis_result"] = analysis_result
inserted_id = insert_analysis(ocr_result["analysis_result"])
insert_aggregate_result(inserted_id, ocr_result["aggregate_result"])
return ocr_result
最后,添加 get_image_analysis_result
、insert_aggregate_result
和 insert_analysis
函数:
def get_image_analysis_result(result, source_image):
analysis_result = { }
string_list = []
if result.reason != sdk.ImageAnalysisResultReason.ANALYZED:
return sdk.ImageAnalysisErrorDetails.from_result(result)
else:
if result.caption is not None:
analysis_result["caption"] = {
"content": result.caption.content,
"confidence": result.caption.confidence
}
analysis_result["text"] = {
"lines": []
}
if result.text is not None:
for line in result.text.lines:
line_result = {
"content": line.content,
"bounding_polygon": line.bounding_polygon,
"words": [],
}
for word in line.words:
word_result = {
"content": word.content,
"bounding_polygon": word.bounding_polygon,
"confidence": word.confidence
}
string_list.append(word.content)
line_result["words"].append(word_result)
document_id = os.path.basename(source_image).rsplit('.', 1)[0]
analysis_result["file_name"] = source_image
analysis_result["text"]["lines"].append(line_result)
analysis_result["id"] = document_id
return analysis_result
def insert_aggregate_result(db_helper, inserted_id, aggregate_result):
db_helper.create_aggregate_result(inserted_id, aggregate_result)
def insert_analysis(db_helper, analysis_result):
doc = db_helper.create_analysis(analysis_result)
return str(doc["id"])
让我们一步步检查每个函数。
get_image_analysis_result
函数接受两个参数:result
,一个图像分析结果对象,以及source_image
,源图像的路径。此函数负责格式转换和数据加载过程:它创建一个空字典analysis_result
和一个空列表string_list
,用于存储从文本分析中提取的单词。它检查结果的reason
属性是否指示图像已成功分析(不是错误)。该函数遍历result.text.lines
中的每一行,并处理行的内容、边界多边形和单词。最后,该函数返回填充的analysis_result
字典。insert_aggregate_result
函数接受两个参数:inserted_id
,已插入文档的 ID,以及aggregate_result
,一个包含聚合分析结果(总和、平均值、中位数、最小值、最大值)的字典。它初始化一个名为db_helper
的CosmosDBHelper
类实例。它调用db_helper
的create_aggregate_result
方法,将提供的aggregate_result
插入到AggregateResultsContainer
容器中。insert_analysis
函数接受一个参数:analysis_result
,一个包含图像分析结果的字典。它初始化一个名为db_helper
的CosmosDBHelper
类实例。然后它调用db_helper
的create_analysis
方法,将提供的analysis_result
插入到 Analysis Results 容器中。插入文档的 ID 从返回的文档中检索,并在从函数返回之前转换为字符串。
以上步骤突出了 OCR 数据(我们从本系列第一篇文章中配置的 Azure AI Vision 获得)的多样化和非结构化特性如何与多模型数据库的灵活结构完美契合。
现在,打开您的终端并运行以下命令,重新安装本系列第一部分中添加的所有包:
pip install -r requirements.txt
然后,运行以下命令安装与 Azure Cosmos DB 相关的包:
pip install azure-cosmos
最后,使用当前包列表更新 _requirements.txt_ 文件:
pip freeze > requirements.txt
在本地测试智能应用程序
如本系列第一部分所述,在终端中运行以下命令,构建映像并启动为 _docker-compose.yml_ 中定义的智能应用程序服务创建容器。
docker-compose up --build --force-recreate
要测试 API,请打开 Postman 并按如下所示提供字段:
- URL: https://:5000/
- 方法:
POST
- 正文:
- 表单数据
- 键: file — 单击 键 字段的右端,然后从下拉列表中选择“文件”。
- 值: 点击 选择文件,然后选择示例代码中提供的 _sample1.png_ 文件。
- 表单数据
现在点击 发送 按钮并在 正文 中查看结果。
"{
\"aggregate_result\": {
\"sum\": \"25821\",
\"average\": \"5164.2\",
\"median\": \"5622\",
\"min\": \"1447\",
\"max\": \"9802\"
},
\"numbers_read\": [
\"3049\",
\"5901\",
\"5622\",
\"1447\",
\"9802\"
],
\"analysis_result\": {
\"caption\": {
\"content\": \"ayellowrectangularsignwithblacknumbers\",
\"confidence\": 0.7065904140472412
},
\"text\": {
\"lines\": [
{
\"content\": \"3049\",
\"bounding_polygon\": [
69.0,
14.0,
144.0,
13.0,
143.0,
38.0,
70.0,
39.0
],
\"words\": [
{
\"content\": \"3049\",
\"bounding_polygon\": [
69.0,
14.0,
139.0,
13.0,
140.0,
38.0,
69.0,
39.0
],
\"confidence\": 0.991
}
]
},
{
\"content\": \"5901\",
\"bounding_polygon\": [
70.0,
54.0,
142.0,
54.0,
141.0,
78.0,
70.0,
79.0
],
\"words\": [
{
\"content\": \"5901\",
\"bounding_polygon\": [
70.0,
54.0,
139.0,
54.0,
139.0,
79.0,
70.0,
79.0
],
\"confidence\": 0.995
}
]
},
{
\"content\": \"5622\",
\"bounding_polygon\": [
70.0,
94.0,
143.0,
94.0,
142.0,
119.0,
69.0,
119.0
],
\"words\": [
{
\"content\": \"5622\",
\"bounding_polygon\": [
69.0,
94.0,
140.0,
94.0,
140.0,
119.0,
69.0,
119.0
],
\"confidence\": 0.998
}
]
},
{
\"content\": \"1447\",
\"bounding_polygon\": [
69.0,
136.0,
144.0,
136.0,
144.0,
161.0,
69.0,
161.0
],
\"words\": [
{
\"content\": \"1447\",
\"bounding_polygon\": [
70.0,
137.0,
140.0,
137.0,
139.0,
161.0,
70.0,
161.0
],
\"confidence\": 0.998
}
]
},
{
\"content\": \"9802\",
\"bounding_polygon\": [
69.0,
176.0,
142.0,
176.0,
143.0,
202.0,
69.0,
202.0
],
\"words\": [
{
\"content\": \"9802\",
\"bounding_polygon\": [
69.0,
176.0,
141.0,
176.0,
141.0,
202.0,
69.0,
202.0
],
\"confidence\": 0.998
}
]
}
]
},
\"file_name\": \"static/files/sample1.png\",
\"id\": \"sample1\",
\"partitionKey\": \"Partition1\"
}
}"
正如我们所看到的,在本地容器上运行的应用程序返回了正确的 JSON,其中包含基于示例图像的分析结果和聚合结果。
在 Azure Cosmos DB 中检查结果
现在,是时候看看结果是如何存储在 Azure Cosmos DB for NoSQL 多模型数据库中的了。
在 Azure 门户中,打开您的 Cosmos DB 帐户资源,单击 数据资源管理器 选项卡,展开 IntelligentAppDB 数据库树,然后单击 AggregateResultsContainer 中的 Items 节点。然后单击 sample1 项以查看右侧面板上的结果:
现在,点击 ImageAnalysisContainer 中的 Items 节点,然后点击 sample1 项,查看右侧面板中的结果。
如我们所见,我们的智能应用程序执行的 OCR 操作会产生不同结构的结果。但是,通过 Azure Cosmos DB,我们可以轻松地通过将项目分离到容器中来存储这些结构,而无需为每种数据类型创建复杂的架构。
更新 AKS 上智能应用程序的版本
现在我们已经学习了如何在本地实现和测试由 Cosmos DB 提供支持的应用程序新版本,接下来我们将探讨如何使用 Docker 和 Kubernetes 命令行工具在 AKS 中更新和部署我们智能应用程序的这个新版本。此过程确保了应用程序的最新版本已部署并在 Kubernetes 集群中运行。
在创建应用程序版本 2 之前,请确保您的 Docker 容器正在运行。然后,运行以下命令停止并删除本地 intelligent-app
容器:
docker container stop intelligent-app
docker container rm intelligent-app
然后,要重新创建智能应用程序的镜像,请使用以下带有 --build
参数的 docker-compose
应用程序命令:
docker-compose up --build --force-recreate
现在,使用 docker tag
命令标记镜像。将下面的 <name-of-azure-container-registry>
替换为您的 ACR 登录服务器名称或公共注册表主机名。请务必将镜像版本更新为 :v2
,如下所示:
docker tag intelligent-app <name-of-azure-container-registry>.azurecr.io/intelligent-app:v2
现在,运行以下命令以显示带有新标签的容器镜像:
docker images
您将得到一个类似于以下的结果:
REPOSITORY TAG IMAGE ID CREATED SIZE
intelligent-app latest 1ca9eb914279 40 minutes ago 258MB
<name-of-azure-container-registry>.azurecr.io/intelligent-app v2 1ca9eb914279 40 minutes ago 258MB
<name-of-azure-container-registry>.azurecr.io/intelligent-app v1 676ede4aa18c About an hour ago 197MB
现在,使用 docker push
将镜像上传到您的注册表。将 <name-of-azure-container-registry>
替换为您的 ACR 登录服务器名称。
docker push <name-of-azure-container-registry>.azurecr.io/intelligent-app:v2
要更新应用程序,请使用 kubectl set
命令。将 <name-of-azure-container-registry>
更新为您的容器注册表的登录服务器或主机名,并指定 v2
应用程序版本。
kubectl set image deployment intelligent-app intelligent-app=<name-of-azure-container-registry>.azurecr.io/intelligent-app:v2
现在,我们将使用 kubectl
命令部署应用程序的第 2 版。首先,将终端更改到 _Deployment_ 文件夹。
cd Deployment
在编辑器中打开 _deployment.yml_ 文件,并将容器镜像版本标签更新为 v2
。
image: intelligentapp.azurecr.io/intelligent-app:v2
然后,运行以下命令创建或更新 _deployment.yml_ 文件中定义的 Kubernetes 资源:
kubectl apply -f deployment.yml
探索多模型数据库的实际用例
在构建智能应用程序时,许多行业都可以从利用多模型数据库中受益。以下仅是几个实际示例:
- 电子商务个性化 — 多模型数据库允许电子商务平台存储和管理各种数据类型,例如客户资料、产品详细信息、购买历史以及用户生成的内容(如评论和图像)。
- 医疗保健患者记录 — 多模型数据库可以帮助医疗保健行业管理各种患者数据,例如诊断和药物,半结构化数据,例如医生笔记,以及非结构化数据,例如医疗图像和检测结果。
- 社交媒体分析 — 多模型数据库在社交媒体平台中用于处理用户生成的大量多样化数据,例如用户个人资料、连接、帖子和文本内容。它们还可以存储指向位于Azure Blob 存储上的图像和视频的链接。这些数据库使社交平台能够执行快速复杂的查询以进行实时分析。
Cosmos DB 的模式无关方法帮助它无缝适应这种多样性,使我们的智能应用程序能够将 OCR 分析和聚合数据存储为 JSON 文档,而无需预定义的结构。
与传统关系数据库不同,Cosmos DB for NoSQL 等多模型数据库的灵活性确保数据库可以适应不断发展的 OCR 数据,而无需频繁修改模式。这种特性使其成为我们智能应用程序的强大选择,因为该应用程序处理各种文档并需要快速适应能力。
后续步骤
多模型数据库对智能应用程序而言是无价之宝,它提供智能索引、缓存和查询优化,可实现快速数据访问。它们支持文档、图和键值对等各种数据结构,从而实现连贯的数据管理、简化的开发和富有洞察力的分析——促进可扩展性,并允许我们将数据适应多种格式,而不会影响效率。
探索 Azure 的 Cosmos DB 和其他服务,释放您的智能应用程序的更多潜力——并继续阅读本周的第三个也是最后一个主题,了解如何通过 Azure Kubernetes 服务将您的智能应用程序提升到新的水平。