Azure Cosmos DB 개발자 가이드

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, 지원되는 기능, 문제 해결 및 알려진 문제의 개념을 안내합니다. 아래 개념 및 코드 샘플에 대한 자세한 내용은 Azure Cosmos DB SDK에 대한 Spring Data 추가 정보를 참조 하세요.

버전 지원 정책

Spring Boot 버전 지원

이 프로젝트는 여러 Spring Boot 버전을 지원합니다. 자세한 내용은 Spring Boot 지원 정책을 참조 하세요. Maven 사용자는 프로젝트에서 상속하여 Spring에서 spring-boot-starter-parent 종속성 버전을 관리할 수 있도록 종속성 관리 섹션을 가져올 수 있습니다. 자세한 내용은 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>

필수 조건

SLF4J는 로깅을 사용하려는 경우에만 필요합니다. SLF4J API를 선택한 로깅 구현과 연결하는 SLF4J 바인딩도 다운로드합니다. 자세한 내용은 SLF4J 사용자 설명서를 참조하세요.

구성 클래스 설정 및 사용자 지정

구성 클래스를 설정하려면 확장 AbstractCosmosConfiguration해야 합니다. 자세한 내용은 설치 구성 클래스를 참조 하세요.

Azure Spring Data Azure Cosmos DB SDK에서 사용하는 기본 CosmosAsyncClient 설정을 제공하거나 GatewayConnectionConfig 둘 다 제공하여 DirectConnectionConfig 사용자 지정할 수 있습니다CosmosClientBuilder. 전체 샘플을 보려면 구성 사용자 지정 섹션을 참조 하세요.

엔터티 설정

Azure Cosmos DB에서 간단한 엔터티를 항목으로 정의할 수 있습니다. 주석을 추가하고 @Container 컨테이너와 관련된 속성을 지정하여 엔터티를 정의할 수 있습니다. 자세한 내용은 엔터티 정의를 참조 하세요.

컨테이너 주석은 컨테이너 이름, RU(요청 단위), TL(Time to Live), 자동 크기 조정 처리량, 중첩 파티션 키 지원 및 기타 컨테이너 속성을 사용하여 컨테이너를 만드는 것을 지원합니다.

리포지토리 설정

Azure Spring Data Azure Cosmos DB는 ReactiveCrudRepository 다음과 같은 기본 CRUD 기능을 제공하는 (비동기 API) 및 CrudRepository (동기화 API)를 지원합니다.

  • 저장
  • Findall
  • findOne by ID
  • deleteAll
  • ID로 삭제
  • delete entity

애플리케이션에 대한 Spring Data 리포지토리를 설정하도록 확장 CosmosRepository (동기화 API 지원) 또는 ReactiveCosmosRepository (비동기 API 지원용)할 수 있습니다. 자세한 내용은 리포지토리 만들기를 참조 하세요.

Azure Spring Data Azure Cosmos DB는 .를 사용하여 리포지토리에 주석이 추가된 쿼리를 지정할 수 @Query있습니다. 자세한 내용은 QueryAnnotation: 리포지토리에서 주석이 추가된 쿼리를 사용합니다.

Spring Data 주석

Spring Data @Id 주석

do기본 클래스에서 필드를 매핑하는 방법에는 여러 가지가 있습니다id. 자세한 내용은 Spring 데이터 ID 주석 코드 섹션을 참조 하세요.

ID 자동 생성

Azure Spring Data Azure Cosmos DB는 주석을 사용하여 ID의 자동 생성을 @GeneratedValue 지원합니다. 자세한 내용은 ID 자동 생성 섹션을 참조하세요.

SpEL 식 및 사용자 지정 컨테이너 이름

기본적으로 컨테이너 이름은 사용자 do기본 클래스의 클래스 이름이 됩니다. 사용자 지정하려면 do기본 클래스에 주석을 추가 @Container(containerName="myCustomContainerName") 합니다. 자세한 내용은 SpEL 식 및 사용자 지정 컨테이너 이름 섹션을 참조 하세요.

Custom IndexingPolicy

기본적으로 IndexingPolicy Azure 서비스에 의해 설정됩니다. 사용자 지정하려면 do기본 클래스에 주석 @CosmosIndexingPolicy 을 추가합니다. 자세한 내용은 인덱싱 정책 섹션을 참조 하세요.

고유 키 정책

Azure Spring Data Azure Cosmos DB는 do기본 클래스에 주석을 @CosmosUniqueKeyPolicy 추가하여 컨테이너에 대한 설정을 UniqueKeyPolicy 지원합니다. 자세한 내용은 고유 키 정책 섹션을 참조하세요.

Azure Cosmos DB 파티션

Azure-spring-data-cosmosAzure Cosmos DB 파티션을 지원합니다.

do기본 클래스의 필드를 파티션 키 필드@PartitionKey로 지정하려면 .

CRUD 작업을 수행할 때 파티션 값을 지정합니다.

자세한 내용은 여기 섹션의 테스트를 참조하세요.

낙관적 잠금

Azure-spring-data-cosmos 는 특정 컨테이너에 대해 낙관적 잠금을 지원합니다. 즉, 항목이 다른 프로세스에 의해 수정되는 경우 예외를 제외하고 항목별 upserts/deletes가 실패합니다. 자세한 내용은 낙관적 잠금 섹션을 참조하세요.

Spring Data 사용자 지정 쿼리, 페이징 가능 및 정렬

Azure-spring-data-cosmosSpring 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에서 지원하는 모든 작업을 통과 CosmosClientApplicationContext 하거나 CosmosAsyncClient 실행할 수 있습니다. 자세한 내용은 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(기여자 라이선스 계약)에 동의해야 합니다.

끌어오기 요청을 제출하면 CLA 봇은 CLA를 제공하고 PR을 적절하게 데코레이트해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 주석). 봇에서 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 리포지토리에서 한 번만 이 작업을 수행해야 합니다.

이 프로젝트는 Microsoft 오픈 소스 준수 사항을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 다른 질문이나 의견과 연락 opencode@microsoft.com 하십시오.

Impressions