Spring Data Azure Cosmos DB V3 – 全面可用

工程 | Andy Clement | 2020 年 10 月 5 日 | ...

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抽象支援

@Query註解支援

通常,Spring Data透過派生查詢方法簡化了點讀、點寫和基本查詢的查詢構造。為了提供編寫複雜查詢的靈活性,Spring Data Azure Cosmos DB v3中的@Query註解透過在實現Spring資料儲存庫時提供完全的自定義性和靈活性來補充派生查詢方法。

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應用程式可能具有類似於此處所示的體系結構

multi database setup

透過附加憑據增強您的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註解

透過新增@Version註解,使用者現在可以將任何欄位對映到_etag,從而方便地使用樂觀併發控制。

樂觀併發控制允許您防止丟失的更新和刪除。併發、衝突的操作受制於常規的悲觀鎖定——當兩個併發操作嘗試更新專案的最新版本時,其中一個將成功,另一個將失敗。然而,如果一個或兩個嘗試併發更新同一專案的操作正在執行讀-修改-寫,資料庫不知道衝突操作中的任何一個或兩個先前讀取的值是否確實是該專案的最新值。幸運的是,樂觀併發控制(OCC)在任何一個操作進入資料庫引擎內部的事務邊界之前檢測到這種情況。在底層,Azure Cosmos DB透過使用HTTP ETag欄位(JSON文件中的_etag)標記每個文件來方便訪問條件,該欄位在每次修改時都會更改。透過新的@Version註解,Spring Data Azure Cosmos DB v3聯結器將樂觀鎖定更進一步——您的Spring應用程式中的任何物件欄位現在都可以對映到_etag,從而實現更大的併發控制和程式碼中含義的改進清晰度。透過OCC,您可以保護您的更新不會意外覆蓋他人的更改,並防止他人意外覆蓋您自己的更改。

Spring Boot actuator

透過Spring Boot actuator終結點監控每個Azure Cosmos DB即時儲存庫物件的健康狀態。這將在10月中旬,作為每月Azure Spring Boot啟動器釋出週期的一部分,在azure-cosmosdb-spring-boot-starter中啟用。

顯著的效能改進

Spring Data Azure Cosmos DB v3以Azure Cosmos DB Java SDK v4為基礎,該SDK本身已根據Java使用者的重大反饋進行了改進。因此,Java SDK v4優化了請求吞吐量和負載下的穩定性。目前,Java SDK v4比舊的Java SDK(v3和v2)的效能提高了20%,未來還有望進一步改進。

performance figures

遵循這些效能提示故障排除文件,確保您已充分最佳化應用程式。審查Azure Cosmos DB資料建模分割槽的最佳實踐。從長遠來看,這些因素在效能方面可能與客戶端設定同樣重要!

此版本的其他顯著功能

  • @GeneratedValue 註解用於自動化ID生成。

  • 審計框架支援,用於自動填充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的資訊,並按照我們的分步指南開始使用。

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有