Azure Cosmos DB 开发人员指南
适用于 Azure Cosmos DB 的 Azure Spring Data 为 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 Cosmos DB 的 Azure Spring Data?
开始使用
添加包
如果使用 Maven,请添加以下依赖项。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>LATEST</version>
</dependency>
先决条件
- Java 开发工具包(JDK)版本 8 或更高版本。
- 有效的 Azure 帐户。 如果没有,可以注册 免费帐户。 另外,可使用 Azure Cosmos DB 仿真器进行开发和测试。 由于仿真器 http 证书是自签名证书,因此你需要将此证书导入到 java 信任的证书存储中,如此处所述
- (可选)SLF4J 是一种日志外观。
- (可选)SLF4J 绑定用于将特定的记录框架与 SLF4J 相关联。
- (可选)Maven
仅当计划使用日志记录时,才需要 SLF4J。另请下载 SLF4J 绑定,该绑定可将 SLF4J API 与你选择的记录实现链接在一起。 有关详细信息,请参阅 SLF4J 用户手册。
设置和自定义配置类
若要设置配置类,需要扩展 AbstractCosmosConfiguration
。 有关详细信息,请参阅 安装程序配置类。
可以通过提供或同时提供DirectConnectionConfig
或GatewayConnectionConfig
同时提供它们来CosmosClientBuilder
自定义 Azure Spring Data Azure Cosmos DB SDK 使用的基础CosmosAsyncClient
。 有关完整示例,请访问 自定义配置部分。
实体设置
可以将简单实体定义为 Azure Cosmos DB 中的项。 可以通过添加 @Container
批注并指定与容器相关的属性来定义实体。 有关详细信息,请参阅 “定义实体”。
容器注释支持指定容器名称、 请求单位 (RU)、生存时间、 创建具有自动缩放吞吐量的容器、 嵌套分区键支持和其他容器属性。
存储库设置
Azure Spring Data Azure Cosmos DB 支持 ReactiveCrudRepository
(异步 API)和 CrudRepository
(同步 API),提供以下基本 CRUD 功能:
- 保存
- findAll
- findOne by ID
- deleteAll
- delete by ID
- delete entity
可以扩展 CosmosRepository
(用于同步 API 支持)或 ReactiveCosmosRepository
(对于异步 API 支持),为应用程序设置 Spring Data 存储库。 有关详细信息,请参阅 “创建存储库”。
Azure Spring Data Azure Cosmos DB 支持使用 @Query
在存储库中指定带批注的查询。 有关详细信息,请参阅 QueryAnnotation:在存储库中使用带批注的查询。
Spring Data 注释
Spring Data @Id 注释
可通过多种方式将域类中的字段映射到 id
。 有关详细信息,请参阅 Spring 数据 ID 注释代码部分。
ID 自动生成
Azure Spring Data Azure Cosmos DB 支持使用 @GeneratedValue 批注自动生成 ID。 有关详细信息,请参阅 ID 自动生成部分。
SpEL 表达式和自定义容器名称
默认情况下,容器名称将是用户域类的类名。 若要自定义,请将 @Container(containerName="myCustomContainerName")
批注添加到域类。 有关详细信息,请参阅 SpEL 表达式和自定义容器名称部分。
自定义 IndexingPolicy
默认情况下, IndexingPolicy
Azure 服务将设置。 若要自定义,请将批注 @CosmosIndexingPolicy
添加到域类。 有关详细信息,请参阅 索引策略部分。
唯一密钥策略
Azure Spring Data Azure Cosmos DB 支持通过将批注@CosmosUniqueKeyPolicy
添加到域类来设置UniqueKeyPolicy
容器。 有关详细信息,请参阅 唯一密钥策略部分。
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 Pageable、Slice 和 Sort。 有关详细信息,请参阅 查询、可分页和排序部分。
通过 Spring Data Cosmos 使用 Azure Cosmos DB Java SDK
Azure-spring-data-cosmos
支持使用 Azure Cosmos DB Java SDK
。 用户可以获取CosmosClient
或运行 ApplicationContext
Azure Cosmos DB Java SDK 支持的任何操作。CosmosAsyncClient
有关详细信息,请参阅 通过 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。 有关详细信息,请参阅 “启用客户端日志记录”部分。
示例
有关完整的示例项目,请参阅 示例项目。
多数据库帐户
有关完整的示例项目,请参阅 多数据库示例项目。
具有多个数据库的单个帐户
有关完整的示例项目,请参阅 包含多数据库示例项目的单个帐户。
后续步骤
- 详细了解 Azure Spring Data Azure Cosmos DB。
- 详细了解 Azure Cosmos DB 服务
- 请参阅 Azure Spring Data Azure Cosmos DB 示例
- 请参阅 Azure Cosmos DB 示例的 Spring MVC
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。
提交拉取请求时,CLA 机器人会自动确定是否需要提供 CLA 并适当修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 在所有存储库中执行此操作一次。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,如有任何其他问题或评论,请联系 opencode@microsoft.com。