什么是 Azure Cosmos DB for NoSQL
我们先从几个定义入手,然后快速介绍 Azure Cosmos DB for NoSQL。 本概述可帮助你了解 Azure Cosmos DB 是否适合你的工作。
什么是 NoSQL 数据库?
开发人员需要新型的数据库来应对现代应用的独特挑战。 NoSQL 数据库旨在满足以下需求,例如:
- 大量数据。
- 具有许多不同来源和形式的数据。
- 用于存储不同类型的数据的动态数据架构。
- 使用高速和/或实时数据。
你可以根据它们具有的共同特征而不是特定的正式定义来定义 NoSQL 数据库。 其特征包括:
- 非关系数据存储。
- 设计为横向扩展。
- 不强制执行特定架构。
NoSQL 数据库通常不强制执行关系约束或对数据设置锁定,从而加快写入速度。 它们通常还被设计为通过分片或分区进行水平扩展,因此无论大小如何,它们都能保持高性能。
尽管有许多 NoSQL 数据模型,但当在 NoSQL 数据库中为数据建模时,通常使用四个广泛的数据模型系列:
下面我们将重点介绍 Azure Cosmos DB for NoSQL 支持的数据模型:文档数据模型。
为什么要将 NoSQL 数据库与文档数据模型一起使用?
文档数据模型将数据分解为各个文档实体。 文档可以是任何结构化数据类型,但数据格式通常采用 JSON。 Azure Cosmos DB for NoSQL 对 JSON 提供本机支持。
文档是一个原子实体,可以具有其自己的数据形式,而不考虑存储在同一数据库中的其他文档中的内容。 因为存在这种灵活性,所以无需预定义的架构,可以更轻松地快速生成新应用程序。 此外,这种灵活性使不同类型的数据可以存储在一起,模型可以在应用程序的生存期中不断发展。
什么是 JSON 文档?
JavaScript 对象表示法(即 JSON)是一种轻型数据格式。 JSON 的构建是为了与 JavaScript 语言中的对象的文字表示法高度兼容。 许多框架、浏览器甚至数据库都对 JavaScript 提供本机支持,使 JSON 成为用于传输和存储数据的常用格式。
下面是 JSON 文档的示例:
{
"device": {
"type": "mobile"
},
"sentTime": "2019-11-12T13:08:42",
"spoolRefs": [
"6a86682c-be5a-4a4a-bacd-96c4d1c7ece6",
"79e78fe2-93aa-4688-89db-a7278b034aa6"
]
}
如你所见,JSON 是一种相对可读的数据格式,可清楚地公开其内容。 在 JavaScript 应用程序中,JSON 的解析和使用也相对轻松。
什么是 Azure Cosmos DB for NoSQL?
Azure Cosmos DB for NoSQL 是一项快速的 NoSQL 和矢量数据库服务,能针对不同的数据提供丰富的查询,支持新一代生成式 AI 应用。 它有助于提供可配置且可靠的性能,在全球范围内分布,并支持快速开发。
NoSQL API 是处理文档的核心或本机 API。 NoSQL API 支持利用 JSON 文档、具有常见语法的查询语言以及常用编程语言的客户端库进行快速、灵活的开发。 Azure Cosmos DB 还提供矢量索引和搜索等独特功能,允许用户基于用户数据创建能够快速有效地进行缩放的新型生成式 AI 应用程序。
Azure Cosmos DB for NoSQL 有几个优点,例如:
- 业界领先的矢量数据库,具有矢量索引和搜索功能,专为处理高维矢量而设计,可实现任何规模的高效且准确的矢量搜索。
- 在任何规模下都能保证速度(即使是突发情况),在全球任何位置都能提供不受限制的即时弹性、快速读取和多主数据库写入。
- 快速、灵活的应用开发,使用常用语言的 SDK 和框架(例如 .NET、Java、Python、JavaScript 和 GO),还有非 ETL(提取、转换和加载)分析。
- 可供任务关键型应用程序使用,能保证业务连续性、99.999% 的可用性和企业级安全性。
- 完全托管且经济高效,具有功能齐全的无服务器产品/服务以及可响应应用程序需求的即时、自动和动态的缩放功能。
因为 Azure Cosmos DB 具有这些功能,所以它是现代应用程序开发的理想选择。 Azure Cosmos DB for NoSQL 特别适用于具有以下特点的应用程序:
- 会遭遇不可预测的流量高峰和流量下降
- 生成大量数据
- 需要提供实时用户体验
- 依赖于业务连续性
Azure Cosmos DB for NoSQL 可以使用灵活的架构存储本机 JSON 文档。 数据会自动编入索引,并且可以使用专为 JSON 数据设计的 SQL 查询语言对数据进行查询。 可以使用适用于常用框架(例如 .NET、Python、Java、Node.js 和 GO)的 SDK 访问 NoSQL API