抢先一步
VMware 提供培训和认证,助您加速进步。
了解更多Azure 上的 Spring 团队与 Azure Cosmos DB 团队合作,自豪地宣布 Spring Data Azure Cosmos DB v3 已全面可用。这是 Azure Cosmos DB SQL API Spring Data 连接器的最新版本。
Azure Cosmos 是一个高可用、全球分布的多模型数据库,提供具有竞争力的性能 SLA。借助 Spring Data Azure Cosmos DB,开发者可以直接在 Azure Cosmos DB SQL API 之上原生使用 Spring Data 来操作文档并发出自定义或派生查询。
随着 v3 连接器的发布及其与 Azure 上的 Spring 的深度集成,新一轮创新浪潮得以释放,帮助 Spring 开发者更加高效,并在 Azure Cosmos DB 之上利用更多的 Spring 抽象。Spring Data Azure Cosmos DB v3 现在支持 Java 11。此外,Spring Data Azure Cosmos DB v3 还增加了对新注解 (@Query, @Version 和 @GeneratedValue) 的支持、多数据库应用程序的支持,同时带来了性能改进。
通常,Spring Data 通过派生查询方法简化了点读、点写和基本查询的查询结构。为了灵活编写复杂查询,Spring Data Azure Cosmos DB v3 中的 @Query 注解通过提供完全可定制性和灵活性来补充派生查询方法,方便实现 Spring Data Repository。
public interface AnnotatedQueriesUserRepositoryCodeSnippet extends CosmosRepository<User, String> {
@Query(value = "select * from c where c.firstName = @firstName and c.lastName = @lastName")
List<User> getUsersByTitleAndValue(@Param("firstName") int firstName, @Param("lastName") String lastName);
@Query(value = "select * from c offset @offset limit @limit")
List<User> getUsersWithOffsetLimit(@Param("offset") int offset, @Param("limit") int limit);
}
借助 Spring Data Azure Cosmos DB v3,您可以使用多个数据库和/或多个唯一的 Azure Cosmos DB 账户。您的 Spring Data 应用程序可能具有类似于此处所示的架构
通过在您的 application.properties
文件中添加额外的凭据来引入第二个 Azure Cosmos DB 账户端点
# primary account cosmos config
azure.cosmos.primary.uri=your-primary-cosmosDb-uri
azure.cosmos.primary.key=your-primary-cosmosDb-key
...
# secondary account cosmos config
...
您的应用程序代码可以指定要连接到每个账户端点的一个或多个 Azure Cosmos DB 数据库。
Spring Data Azure Cosmos DB v3 通过公开 Azure Cosmos DB Java SDK v4 CosmosClientBuilder 类,实现了对每个端点客户端的完全可配置性
@Bean
public CosmosClientBuilder appCosmosClientBuilder() {
return new CosmosClientBuilder()
.key(secondaryProperties.getKey())
.endpoint(secondaryProperties.getUri());
}
这提供了对 Azure Cosmos DB 客户端的完全可配置性,包括限制重试策略和其他功能。
通过新增 @Version 注解,用户现在可以将任何字段映射到 _etag,从而轻松使用乐观并发控制。
乐观并发控制允许您防止丢失更新和删除。并发、冲突的操作受制于常规的悲观锁定——当两个并发操作尝试更新最新版本的项时,其中一个会成功,另一个会失败。然而,如果一个或两个尝试并发更新同一项的操作正在执行读-修改-写操作,数据库不知道其中一个或两个冲突操作先前读取的值是否确实是该项的最新值。幸运的是,乐观并发控制 (OCC) 在任一操作进入数据库引擎内部的事务边界之前检测到这种情况。在底层,Azure Cosmos DB 通过用 HTTP ETag 字段(在 JSON 文档中为 _etag)标记每个文档来促进访问条件,该字段在每次修改时都会更改。借助新的 @Version 注解,Spring Data Azure Cosmos DB v3 连接器将乐观锁定更进一步——现在可以将您的 Spring 应用程序中的任何对象字段映射到 _etag,从而实现更高的并发控制,并提高代码含义的清晰度。使用 OCC,您可以保护您的更新不意外覆盖他人的更改,并防止他人意外覆盖您自己的更改。
通过 Spring Boot Actuator 端点监控每个 Azure Cosmos DB 实时仓库对象的健康状态。这将在 10 月中旬作为每月 Azure Spring Boot Starters 发布节奏的一部分,在 azure-cosmosdb-spring-boot-starter
中启用。
Spring Data Azure Cosmos DB v3 基于 Azure Cosmos DB Java SDK v4,而后者已根据 Java 用户的实际反馈进行了重大改进。因此,Java SDK v4 在负载下优化了请求吞吐量和稳定性。目前 Java SDK v4 相较于旧的 Java SDK(v3 和 v2)性能提升了 20%,未来预计会有更多改进。
遵循这些性能提示和故障排除文档,以确保您的应用程序已完全优化。查看 Azure Cosmos DB 关于数据建模和分区的最佳实践。从长远来看,这些因素在性能方面与客户端设置同样重要!
用于自动 ID 生成的 @GeneratedValue 注解。
审计框架支持,用于自动填充 createdBy、createdDate、lastModifiedBy 和 lastModifiedDate 字段
支持将嵌套字段用作分区键
能够获取每个 Azure Cosmos DB 请求消耗的请求单位
在您的项目中使用 Spring Data Azure Cosmos DB
如果您已经设置了 Azure Cosmos DB 和 Spring 项目,只需在现有的 POM 文件中包含以下依赖项,或在此处尝试我们的入门示例。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>3.0.0</version>
</dependency>
如果您是 Azure Cosmos DB 和 Azure Spring Starters 的新手,可以了解有关Azure Cosmos DB 的更多信息,并按照我们的分步指南开始使用。