Azure Cosmos DB 開發人員指南
適用於 Azure Cosmos DB 的 Azure Spring Data 提供適用於 NoSQL 的 Azure Cosmos DB 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 Version Support。
要使用的 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 Spring Data for Azure Cosmos DB?。
開始使用
包含套件
如果您使用 Maven,請新增下列相依性。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>LATEST</version>
</dependency>
必要條件
- Java Development Kit (JDK)版本 8 或更高版本。
- 作用中的 Azure 帳戶。 如果您沒有帳戶,您可以註冊 免費帳戶。 或者,您可以使用 Azure Cosmos DB 模擬器 進行開發和測試。 當模擬器 HTTPs 憑證自我簽署時,您必須將其憑證匯入 Java 信任的憑證存放區, 這裡將說明
- (選擇性)SLF4J 是記錄外觀。
- (選擇性) SLF4J 系結 可用來建立特定記錄架構與 SLF4J 的關聯。
- (選擇性) Maven
只有在您打算使用記錄時,才需要 SLF4J,同時下載 SLF4J 系結,這會連結 SLF4J API 與您選擇的記錄實作。 如需詳細資訊,請參閱 SLF4J 使用者手冊。
設定和自定義組態類別
若要設定群組態類別,您需要擴充 AbstractCosmosConfiguration
。 如需詳細資訊,請參閱 設定組態類別。
您可以藉由提供 或 兩者來自定義 Azure Spring Data Azure Cosmos DB SDK 所使用的基礎CosmosAsyncClient
,並將其提供給 CosmosClientBuilder
。GatewayConnectionConfig
DirectConnectionConfig
如需完整的範例,請流覽 自定義組態一節。
實體設定
您可以將簡單的實體定義為 Azure Cosmos DB 中的專案。 您可以藉由新增 @Container
批注並指定與容器相關的屬性來定義實體。 如需詳細資訊,請參閱 定義實體。
容器批注支援指定容器名稱、 要求單位 (RU)、存留時間、 建立具有自動調整輸送量的容器、 巢狀數據分割索引鍵支援,以及其他容器屬性。
存放庫設定
Azure Spring Data Azure Cosmos DB 支援 ReactiveCrudRepository
(async API) 和 CrudRepository
(sync API),其提供下列基本 CRUD 功能:
- save
- findAll
- findOne by ID
- deleteAll
- 依標識碼刪除
- 刪除實體
您可以擴充 CosmosRepository
(針對同步 API 支援) 或 ReactiveCosmosRepository
(針對異步 API 支援) 來設定應用程式的 Spring Data 存放庫。 如需詳細資訊,請參閱 建立存放庫。
Azure Spring Data Azure Cosmos DB 支援使用 @Query
在存放庫中指定批注查詢。 如需詳細資訊,請參閱 QueryAnnotation:在存放庫中使用批注查詢。
Spring 數據批注
Spring Data @Id註釋
有多種方式可將網域類別中的欄位對應至 id
。 如需詳細資訊,請參閱 spring 數據識別碼一節。
標識碼自動產生
Azure Spring Data Azure Cosmos DB 支援使用 @GeneratedValue 批注自動產生標識符。 如需詳細資訊,請參閱標識碼 自動產生一節。
SpEL 運算式和自訂容器名稱
根據預設,容器名稱會是使用者網域類別的類別名稱。 若要自定義,請將 @Container(containerName="myCustomContainerName")
批註新增至網域類別。 如需詳細資訊,請參閱 SpEL運算式和自訂容器名稱一節。
自定義索引原則
根據預設, IndexingPolicy
Azure 服務會設定 。 若要自定義,請將批註 @CosmosIndexingPolicy
新增至網域類別。 如需詳細資訊,請參閱 編製索引原則一節。
唯一索引鍵原則
Azure Spring Data Azure Cosmos DB 支援在容器上設定 UniqueKeyPolicy
,方法是將批注 @CosmosUniqueKeyPolicy
新增至網域類別。 如需詳細資訊,請參閱唯一 索引鍵原則一節。
Azure Cosmos DB 磁碟分區
Azure-spring-data-cosmos
支援 Azure Cosmos DB 磁碟分區。
若要將網域類別的欄位指定為資料分割索引鍵欄位,只要以 @PartitionKey
標註它即可。
當您執行 CRUD 作業時,請指定分割區值。
如需詳細資訊,請參閱 這裡的測試一節。
開放式鎖定
Azure-spring-data-cosmos
支援特定容器的開放式鎖定,這表示專案上的 upserts/deletes 將會失敗,以防專案同時由另一個進程修改時發生例外狀況。 如需詳細資訊,請參閱 開放式鎖定一節。
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
。 用戶可以透過 Azure Cosmos DB Java SDK 取得 CosmosClient
或 CosmosAsyncClient
Bean ApplicationContext
並執行任何作業。 如需詳細資訊,請參閱 透過 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 的相同方式提出問題。
啟用客戶端記錄
Azure-spring-data-cosmos
使用 SLF4j 做為記錄外觀,可支援登入 log4j 和 logback 等熱門記錄架構。 如需詳細資訊,請參閱 啟用客戶端記錄一節。
範例
如需完整的範例專案,請參閱 範例專案。
多資料庫帳戶
如需完整的範例專案,請參閱 多資料庫範例專案。
具有多資料庫的單一帳戶
如需完整的範例專案,請參閱 具有多資料庫範例專案的單一帳戶。
下一步
- 深入瞭解 Azure Spring 數據 Azure Cosmos DB。
- 深入瞭解 Azure Cosmos DB 服務
- 請參閱 Azure Spring Data Azure Cosmos DB 範例
- 請參閱使用 Azure Cosmos DB 的 Spring MVC 範例
參與
此專案歡迎您參與並提供建議。 大部分的捐款都要求您同意 「參與者許可協定」(CLA) ,宣告您有權,而且實際上確實會授與我們使用您貢獻的許可權。
當您提交提取要求時,CLA-Bot 會自動判斷您是否需要提供 CLA 並適當地裝飾 PR(例如標籤、批註)。 請遵循 bot 提供的指示。 您只需要使用我們的 CLA 在所有存放庫上執行此動作一次。
此專案採用了 Microsoft 開放原始碼管理辦法。 如需詳細資訊,請參閱 《行為規範》常見問題 ,或連絡 opencode@microsoft.com 任何其他問題或意見。