搶先一步
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 的更多資訊,並按照我們的分步指南開始使用。