Azure Cosmos DB 開発ガイド
Azure Spring Data は、NoSQL用の Azure Cosmos DB
このガイドでは、Azure Spring Data Azure Cosmos DB SDK の概念、サポートされている機能、トラブルシューティング、既知の問題について説明します。 以下の概念の詳細とコード サンプルについては、Spring Data for Azure Cosmos DB SDK の Readme を参照してください。
バージョンのサポート ポリシー
Spring Boot バージョンのサポート
このプロジェクトでは、複数の Spring Boot バージョンがサポートされています。 詳細については、Spring Boot のサポート ポリシーを参照してください。 Maven ユーザーは、spring-boot-starter-parent
プロジェクトを継承して、依存関係管理セクションを取得し、Spring で依存関係のためにバージョンを管理できるようにします。 詳細については、Spring Boot のバージョン サポートを参照してください。
Spring Data バージョンのサポート
このプロジェクトでは、さまざまな spring-data-commons のバージョンがサポートされています。 詳細については、Spring Data のバージョン サポートを参照してください。
使用する 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 Cosmos DB 用 Azure Spring Data バージョンの説明を参照してください。
作業開始
パッケージを含めてください
Maven を使用している場合は、以下の依存関係を追加します。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>LATEST</version>
</dependency>
必須コンポーネント
- Java Development Kit (JDK) バージョン 8 以上。
- アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。 お持ちでない場合は、 無料アカウントにサインアップしてください。 または、Azure Cosmos DB Emulator を使用して、開発とテストを行うこともできます。 エミュレーターの https 証明書は自己署名されているため、ここで説明されているように、その証明書を Java の信頼された証明書ストアにインポートする必要があります。
- (省略可能) ログ記録ファサードの SLF4J。
- (省略可能) SLF4J バインディング を使用して、特定のログ記録フレームワークを SLF4J と関連付けます。
- (省略可能) Maven
SLF4J は、ログを使用する場合にのみ必要です。また、SLF4J API と選択したログの実装をリンクする SLF4J バインディングもダウンロードしてください。 詳細については、SLF4J のユーザー マニュアルを参照してください。
構成クラスを設定してカスタマイズする
構成クラスをセットアップするために、AbstractCosmosConfiguration
を拡張する必要があります。 詳細については、「構成クラスの設定」を参照してください。
GatewayConnectionConfig
または CosmosClientBuilder
、あるいはその両方を指定して、Azure Spring Data Azure Cosmos DB SDK で使用される基礎となる CosmosAsyncClient
をカスタマイズし、それらを DirectConnectionConfig
に提供することができます。 完全なサンプルについては、構成のカスタマイズに関するセクションを参照してください。
エンティティの設定
単純なエンティティを Azure Cosmos DB の項目として定義できます。 エンティティを定義するには、@Container
注釈を追加し、コンテナーに関連するプロパティを指定します。 詳しくは、「エンティティの定義」をご覧ください。
コンテナー注釈では、コンテナー名、要求ユニット (RU)、有効期間、自動スケーリング スループットを使用したコンテナーの作成、入れ子になったパーティション キーのサポート、およびその他のコンテナー プロパティの指定がサポートされています。
リポジトリの設定
Azure Spring Data Azure Cosmos DB では、次の基本的な CRUD 機能を提供する ReactiveCrudRepository
(非同期 API) と CrudRepository
(同期 API) がサポートされています。
- [保存]
- findAll
- ID による findOne
- deleteAll
- ID による削除
- エンティティの削除
アプリケーションの Spring Data リポジトリを設定するために、CosmosRepository
(同期 API のサポート用) または ReactiveCosmosRepository
(非同期 API サポート用) を拡張できます。 詳細については、「リポジトリの作成」を参照してください。
Azure Spring Data Azure Cosmos DB では、リポジトリでの @Query
を使用した注釈付きクエリの指定がサポートされます。 詳細については、「QueryAnnotation: リポジトリ内の注釈付きクエリの使用」を参照してください。
スプリングデータの注釈
Spring Data の @Id 注釈
ドメイン クラスのフィールドを id
にマップするための複数の方法があります。 詳細については、Spring Data ID の注釈コードのセクションを参照してください。
ID の自動生成
Azure Spring Data Azure Cosmos DB では、@GeneratedValue 注釈を使用した ID の自動生成がサポートされています。 詳細については、ID の自動生成に関するセクションを参照してください。
SpEL 式とカスタム コンテナー名
既定では、コンテナー名はユーザー ドメイン クラスのクラス名になります。 カスタマイズするには、注釈 @Container(containerName="myCustomContainerName")
をドメイン クラスに追加します。 詳細については、SpEL 式とカスタム コンテナー名に関するセクションを参照してください。
カスタム インデックスポリシー
既定では、IndexingPolicy
が Azure サービスによって設定されます。 カスタマイズするには、注釈 @CosmosIndexingPolicy
をドメイン クラスに追加します。 詳細については、インデックス ポリシーに関するセクションを参照してください。
一意のキー ポリシー
Azure Spring Data Azure Cosmos DB では、ドメイン クラスに注釈 UniqueKeyPolicy
を追加することで、コンテナーに @CosmosUniqueKeyPolicy
を設定できます。 詳細については、一意のキー ポリシーに関するセクションを参照してください。
Azure Cosmos DB パーティション
パーティション キー フィールドにするドメイン クラスのフィールドを指定するには、それに @PartitionKey
の注釈を付けるだけです。
CRUD 操作を実行するときに、パーティションの値を指定します。
詳細については、こちらのテスト セクションを参照してください。
オプティミスティック ロック
Azure-spring-data-cosmos
では、特定のコンテナーでオプティミスティック ロックがサポートされます。つまり、項目ごとの upsert/削除は、その間に別のプロセスによってその項目が変更されると、例外が発生して失敗することを意味します。 詳細については、オプティミスティック ロックに関するセクションを参照してください。
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
の使用がサポートされています。 ユーザーは、CosmosClient
を介して CosmosAsyncClient
または ApplicationContext
Bean を取得し、Azure Cosmos DB Java SDK でサポートされているすべての操作を実行できます。 詳細については、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
では、"マルチデータベース アカウント"および "マルチデータベースを使用した単一アカウント" を含む、マルチデータベース構成がサポートされています。 完全なコード スニペットについては、マルチデータベース構成に関するセクションを参照してください。
トラブルシューティング
全般
バグが発生した場合は、ここで問題件
新しい機能または変更された可能性のある変更を提案するには、バグの場合と同じ方法で問題を報告します。
クライアントのログ記録を有効にする
Azure-spring-data-cosmos
では、log4j や logback などの一般的なログ記録フレームワークへのログ記録をサポートするロギング ファサードとして SLF4j を使用します。 詳細については、クライアント ログの有効化に関するセクションを参照してください。
使用例
完全なサンプル プロジェクトについては、サンプル プロジェクトを参照してください。
マルチデータベース アカウント
完全なサンプル プロジェクトについては、マルチデータベースのサンプル プロジェクトを参照してください。
マルチデータベースを使用した単一アカウント
完全なサンプル プロジェクトについては、マルチデータベースを使用した単一アカウントのサンプル プロジェクトを参照してください。
次のステップ
- Azure Spring Data Azure Cosmos DB の詳細について詳細を読む。
- Azure Cosmos DB サービスについて詳細を確認する
- Azure Spring Data Azure Cosmos DB のサンプルを参照する
- Azure Cosmos DB の Spring MVC のサンプルを参照する
投稿
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの投稿では、共同作成者使用許諾契約書 (CLA) に同意し、投稿を利用する権利を私たちに実際に付与することを確認する必要があります。
pull request を送信すると、CLA ボットは CLA を提供する必要があるかどうかを自動的に判断し、ラベルやコメントなど、PR を適切に装飾します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。
このプロジェクトは、「Microsoft のオープン ソースの倫理規定」を採用しています。 詳しくは、倫理規定についてよくある質問に関する記事を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。