Azure Cosmos DB 开发指南

Azure Spring Data for Azure Cosmos DB 为 Azure Cosmos DB for NoSQL 提供 Spring Data 支持。 Azure Cosmos DB 是一种全球分布式数据库服务,它允许开发人员使用各种标准 API(如 SQL、MongoDB、Cassandra、Graph 和表)处理数据。

本指南将指导你了解 Azure Spring Data Azure Cosmos DB SDK 的概念、支持的功能、故障排除步骤和已知问题。 有关以下概念和代码示例的详细信息,请参阅适用于 Azure Cosmos DB SDK 的 Spring Data 自述文件

版本支持策略

Spring Boot 版本支持

此项目支持多个 Spring Boot 版本。 有关详细信息,请参阅 Spring Boot 支持策略。 Maven 用户可从 spring-boot-starter-parent 项目继承来获取依赖项管理部分,使 Spring 能够管理依赖项的版本。 有关详细信息,请参阅 Spring Boot 版本支持

Spring Data 版本支持

此项目支持不同的 spring-data-commons 版本。 有关详细信息,请参阅 Spring Data 版本支持

应该使用哪个版本的 Azure Spring Data Azure Cosmos DB

Azure Spring Data Azure Cosmos DB 库支持多个版本的 Spring Boot / Spring Cloud。 有关要与 Spring Boot/Spring Cloud 版本配合使用的 Azure Spring Data 的 Azure Cosmos DB 版本的详细信息,请参阅 我应使用哪个版本的 Azure Spring Data for Azure Cosmos DB?

开始使用

添加包

如果使用 Maven,请添加以下依赖项。

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-spring-data-cosmos</artifactId>
    <version>LATEST</version>
</dependency>

先决条件

仅当计划使用日志记录时,才需要 SLF4J。另请下载 SLF4J 绑定,该绑定可将 SLF4J API 与你选择的记录实现链接在一起。 有关详细信息,请参阅 SLF4J 用户手册

设置和自定义配置类

若要设置配置类,需要扩展 AbstractCosmosConfiguration。 有关详细信息,请参阅安装程序配置类

可以提供 DirectConnectionConfigGatewayConnectionConfig 或两者,并将其提供给 CosmosClientBuilder,自定义 Azure Spring Data Azure Cosmos DB SDK 使用的基础 CosmosAsyncClient。 有关完整示例,请访问自定义配置部分

实体设置

你可以将简单实体定义为 Azure Cosmos DB 中的项。 可以通过添加 @Container 注释并指定与容器相关的属性来定义实体。 有关详细信息,请参阅定义实体

容器注释支持指定容器名称、请求单位 (RU)、生存时间、创建具有自动缩放吞吐量的容器嵌套分区键支持和其他容器属性。

存储库设置

Azure Spring Data Azure Cosmos DB 支持 ReactiveCrudRepository(异步 API)和 CrudRepository(同步 API),这些 API 提供以下基本 CRUD 功能:

  • 保存
  • findAll
  • findOne 按 ID
  • deleteAll
  • 按 ID 删除
  • 删除实体

你可以扩展 CosmosRepository(对于同步 API 支持)或 ReactiveCosmosRepository(对于异步 API 支持),为应用程序设置 Spring Data 存储库。 有关详细信息,请参阅创建存储库

Azure Spring Data Azure Cosmos DB 支持使用 @Query 在存储库中指定带注释的查询。 有关详细信息,请参阅 QueryAnnotation:在存储库中使用带注释的查询

Spring数据注解

Spring Data @Id 注释

可通过多种方式将域类中的字段映射到 id。 有关详细信息,请参阅 Spring Data ID 注释代码部分

身份证号自动生成.

Azure Spring Data Azure Cosmos DB 支持使用 @GeneratedValue 注释自动生成 ID。 有关详细信息,请参阅 ID 自动生成部分

SpEL 表达式和自定义容器名称

默认情况下,容器名称将是用户域类的类名。 若要进行自定义,请将 @Container(containerName="myCustomContainerName") 注释添加到域类。 有关详细信息,请参阅 SpEL 表达式和自定义容器名称部分

自定义索引策略

默认情况下,IndexingPolicy 将由 Azure 服务设置。 若要进行自定义,请将 @CosmosIndexingPolicy 注释添加到域类。 有关详细信息,请参阅索引策略部分

唯一键策略

Azure Spring Data Azure Cosmos DB 支持通过向域类添加注释 UniqueKeyPolicy 来在容器上设置 @CosmosUniqueKeyPolicy。 有关详细信息,请参阅唯一键策略部分

Azure Cosmos DB 分区

Azure-spring-data-cosmos 支持 Azure Cosmos DB 分区

若要将域类的字段指定为分区键字段,只需使用 @PartitionKey 对其进行注释。

执行 CRUD 操作时,请指定分区值。

有关详细信息,请参阅此处的测试部分

乐观锁定

Azure-spring-data-cosmos 支持对特定容器的乐观锁定,这意味着如果项目在此期间被其他进程修改,按项进行的更新插入/删除将失败,并出现异常。 有关详细信息,请参阅乐观锁定部分

Spring Data 自定义查询、可分页和排序

Azure-spring-data-cosmos 支持 Spring Data 自定义查询,例如一种查找操作 findByAFieldAndBField。 它还支持 Spring Data 可分页、切片和排序。 有关详细信息,请参阅查询、可分页和排序部分

通过 Spring Data Cosmos 使用 Azure Cosmos DB Java SDK

Azure-spring-data-cosmos 支持使用 Azure Cosmos DB Java SDK。 用户可以通过 CosmosClient 获取 CosmosAsyncClientApplicationContext bean,并执行 Azure Cosmos DB Java SDK 支持的任何操作。 有关详细信息,请参阅通过 Spring Data Cosmos 部分使用 Azure Cosmos 客户端

Spring Data REST

Azure-spring-data-cosmos 支持 Spring Data REST。 有关详细信息,请参阅 Azure Spring Data Azure Cosmos DB REST API 部分

审核

Azure-spring-data-cosmos 支持使用标准 spring-data 注释对数据库实体上的字段进行审核。 有关详细信息,请参阅 Spring Data Azure Cosmos DB 审核部分

多数据库配置

Azure-spring-data-cosmos 支持多数据库配置,包括“多个数据库帐户”和“具有多个数据库的单个帐户”。 有关完整代码片段,请参阅多数据库配置部分

故障排除

常规

如果遇到任何 bug,请在此处提交问题。

若要提出新功能建议或可实施的更改建议,可像报告 Bug 一样提交问题。

启用客户端日志记录

Azure-spring-data-cosmos 使用 SLF4j 作为日志记录门面,支持记录到常用的日志记录框架,如 log4j 和 logback。 有关详细信息,请参阅 的“启用客户端日志记录”部分

示例

有关完整示例项目,请参阅示例项目

多数据库帐户

有关完整示例项目,请参阅多数据库示例项目

具有多个数据库的单个帐户

如需完整的示例项目,请参阅 单一账户与多数据库示例项目

后续步骤

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权授予(并且实际上授予)我们使用你的贡献的权利。

提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如“标签”、“注释”)。 按照机器人提供的说明进行操作即可。 在所有存储库中只需使用 CLA 执行一次此操作。

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅 行为准则常见问题解答,或对于任何其他问题或意见,请联系 opencode@microsoft.com

曝光数