次の方法で共有


Azure Cosmos DB 開発ガイド

Azure Spring Data は、NoSQL用の Azure Cosmos DB に Spring Data のサポートを提供します。 Azure Cosmos DB は、開発者が SQL、MongoDB、Cassandra、Graph、Table などのさまざまな標準 API を使用してデータを操作できるようにするグローバル分散型データベース サービスです。

このガイドでは、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 パーティション

は 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 を使用します。 詳細については、クライアント ログの有効化に関するセクションを参照してください。

使用例

完全なサンプル プロジェクトについては、サンプル プロジェクトを参照してください。

マルチデータベース アカウント

完全なサンプル プロジェクトについては、マルチデータベースのサンプル プロジェクトを参照してください。

マルチデータベースを使用した単一アカウント

完全なサンプル プロジェクトについては、マルチデータベースを使用した単一アカウントのサンプル プロジェクトを参照してください。

次のステップ

投稿

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの投稿では、共同作成者使用許諾契約書 (CLA) に同意し、投稿を利用する権利を私たちに実際に付与することを確認する必要があります。

pull request を送信すると、CLA ボットは CLA を提供する必要があるかどうかを自動的に判断し、ラベルやコメントなど、PR を適切に装飾します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトは、「Microsoft のオープン ソースの倫理規定」を採用しています。 詳しくは、倫理規定についてよくある質問に関する記事を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。

インプレッション数