領先一步
VMware 提供培訓和認證,以加速您的進度。
瞭解更多Spring on Azure 團隊與 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 連接器的發布及其與 Spring on Azure 的深度整合,一股創新浪潮被釋放出來,以幫助 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 repositories 時提供完全的客製化和彈性來補充衍生的查詢方法。
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 監控器端點監控每個 Azure Cosmos DB live repository 物件的健康狀態。這將在 10 月中旬在 azure-cosmosdb-spring-boot-starter
中啟用,作為每月 Azure Spring Boot starters 發布週期的一部分。
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 的最佳實務,以進行資料建模和分割。 從長遠來看,當談到效能時,這些因素可能與用戶端設定一樣重要!
@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,並按照我們的逐步指南開始使用。