자습서: 키/값 데이터를 저장하는 Java 애플리케이션을 사용하여 Azure Cosmos DB에서 API for Cassandra 계정 만들기

적용 대상: Cassandra

개발자는 키/값 쌍을 사용하는 애플리케이션을 가질 수도 있습니다. Azure Cosmos DB에서 API for Cassandra 계정을 사용하여 키/값 데이터를 저장할 수 있습니다. 이 자습서에서는 Java 애플리케이션을 사용하여 Azure Cosmos DB의 API for Cassandra 계정을 만들고, 데이터베이스(키스페이스라고도 함)를 추가하고, 테이블을 추가하는 방법에 대해 설명합니다. Java 애플리케이션에서 Java 드라이버를 사용하여 사용자 ID, 사용자 이름 및 사용자 도시와 같은 세부 정보를 포함하는 사용자 데이터베이스를 만듭니다.

이 자습서에서 다루는 작업은 다음과 같습니다.

  • Cassandra 데이터베이스 계정 만들기
  • 계정 연결 문자열 가져오기
  • Maven 프로젝트 및 종속성 만들기
  • 데이터베이스 및 테이블 추가
  • 앱 실행

필수 조건

데이터베이스 계정 만들기

  1. Azure Portal 메뉴 또는 페이지에서 리소스 만들기를 선택합니다.

  2. 새로 만들기 페이지에서 Azure Cosmos DB를 검색하여 선택합니다.

  3. Azure Cosmos DB 페이지에서 생성를 선택합니다.

  4. API 페이지에서 Cassandra 섹션 아래의 만들기를 선택합니다.

    API는 만들 계정의 형식을 결정합니다. Azure Cosmos DB는 문서 데이터베이스용 NoSQL, 그래프 데이터베이스용 Gremlin, 문서 데이터베이스용 MongoDB, Azure Table 및 Cassandra 등 5개의 API를 제공합니다. 각 API에 대한 별도의 계정을 만들어야 합니다.

    이 빠른 시작에서는 API for Cassandra와 함께 작동하는 테이블을 만들고 있으므로 Cassandra를 선택합니다.

    API for Cassandra에 대해 자세히 알아봅니다.

  5. Azure Cosmos DB 계정 만들기 페이지에서 새 Azure Cosmos DB 계정에 대한 기본 설정을 입력합니다.

    설정 Description
    구독 구독 이 Azure Cosmos DB 계정에 사용할 Azure 구독을 선택합니다.
    리소스 그룹 새로 만들기

    그런 다음, 계정 이름과 같은 이름 입력
    새로 만들기를 선택합니다. 그런 다음, 계정의 새 리소스 그룹 이름을 입력합니다. 간단히 하기 위해 Azure Cosmos DB 계정 이름과 동일한 이름을 사용합니다.
    계정 이름 고유한 이름 입력 내 Azure Cosmos DB 계정을 식별하는 고유한 이름을 입력합니다. 계정 URI는 고유한 계정 이름에 cassandra.cosmos.azure.com이 추가됩니다.

    계정 이름은 소문자, 숫자 및 하이픈(-) 문자만 포함할 수 있으며, 3-31자여야 합니다.
    위치 사용자와 가장 가까운 지역 Azure Cosmos DB 계정을 호스트할 지리적 위치를 선택합니다. 데이터에 가장 빨리 액세스할 수 있도록 사용자와 가장 가까운 위치를 사용합니다.
    용량 모드 프로비저닝된 처리량 또는 서버리스 프로비저닝된 처리량을 선택하여 프로비저닝된 처리량 모드에서 계정을 만듭니다. 서버리스를 선택하여 서버리스 모드에서 계정을 만듭니다.
    Azure Cosmos DB 체험 계층 할인 적용 적용 또는 적용 안 함 Azure Cosmos DB 무료 계층을 사용하면 계정 하나에 처음 1000RU/초 및 25GB의 스토리지가 별도의 비용 없이 제공됩니다. 체험 계층에 대해 자세히 알아보세요.
    총 계정 처리량 제한 계정의 처리량을 제한하려면 선택합니다. 이는 계정의 총 처리량을 특정 값으로 제한하려는 경우에 유용합니다.

    참고 항목

    Azure 구독당 최대 1개의 체험 계층 Azure Cosmos DB 계정을 사용할 수 있으며 계정을 만들 때 옵트인해야 합니다. 체험 계층 할인을 적용하는 옵션이 표시되지 않으면 구독의 다른 계정에서 이미 체험 계층을 사용하도록 설정되었음을 의미합니다.

    The new account page for Azure Cosmos DB for Apache Cassandra

  6. 전역 배포 탭에서 다음 세부 정보를 구성합니다. 이 빠른 시작의 목적을 위해 기본값을 그대로 둘 수 있습니다.

    설정 Description
    지리적 중복 사용 안 함 지역에 쌍 영역을 페어링하여 계정에서 글로벌 배포를 사용하거나 사용하지 않도록 설정합니다. 나중에 계정에 더 많은 지역을 추가할 수 있습니다.
    다중 지역 쓰기 사용 안 함 다중 영역 쓰기 기능을 사용하면 전 세계의 데이터베이스 및 컨테이너에 대해 프로비저닝된 처리량을 활용할 수 있습니다.
    가용성 영역 사용 안 함 가용성 영역은 Azure 지역 내의 격리된 위치입니다. 각 영역은 독립된 전원, 냉각 및 네트워킹을 갖춘 하나 이상의 데이터 센터로 구성됩니다.

    참고 항목

    용량 모드서버리스를 선택한 경우 다음 옵션을 사용할 수 없습니다.

    • 무료 계층 할인 적용
    • 지리적 중복
    • 다중 지역 쓰기
  7. 필요에 따라 다음 탭에서 추가 세부 정보를 구성할 수 있습니다.

    • 네트워킹 - 가상 네트워크에서 액세스를 구성합니다.
    • 백업 정책 - 주기적 또는 지속적인 백업 정책을 구성합니다.
    • 암호화 - 서비스 관리형 키 또는 고객 관리형 키를 사용합니다.
    • 태그 - 태그는 동일한 태그를 여러 개의 리소스 및 리소스 그룹에 적용하여 리소스를 범주화하고 통합된 청구를 볼 수 있는 이름/값 쌍입니다.
  8. 검토 + 만들기를 선택합니다.

  9. 계정 설정을 검토한 다음, 만들기를 선택합니다. 계정을 만드는 데 몇 분이 걸립니다. 포털 페이지에 배포가 완료됨이 표시되기를 기다립니다.

    The Azure portal Notifications pane

  10. 리소스로 이동을 선택하여 Azure Cosmos DB 계정 페이지로 이동합니다.

계정의 연결 세부 정보 가져오기

Azure Portal에서 연결 문자열 정보를 가져오고, Java 구성 파일에 복사합니다. 연결 문자열을 통해 앱이 호스트된 데이터베이스와 통신할 수 있습니다.

  1. Azure Portal에서 Azure Cosmos DB 계정으로 이동합니다.

  2. 연결 문자열 창을 엽니다.

  3. 다음 단계에서 사용할 CONTACT POINT, PORT, USERNAMEPRIMARY PASSWORD 값을 복사합니다.

프로젝트 및 종속성 만들기

이 문서에서 사용하는 Java 샘플 프로젝트는 GitHub에서 호스팅됩니다. 이 문서의 단계를 실행하거나 azure-cosmos-db-cassandra-java-geting-started 리포지토리에서 샘플을 다운로드할 수 있습니다.

파일이 다운로드되면 java-examples\src\main\resources\config.properties 파일에 있는 연결 문자열 정보를 업데이트하고 실행합니다.

cassandra_host=<FILLME_with_CONTACT POINT> 
cassandra_port = 10350 
cassandra_username=<FILLME_with_USERNAME> 
cassandra_password=<FILLME_with_PRIMARY PASSWORD> 

다음 단계를 사용하여 샘플을 처음부터 빌드합니다.

  1. 터미널 또는 명령 프롬프트에서 Cassandra-demo라는 새 Maven 프로젝트를 만듭니다.

    mvn archetype:generate -DgroupId=com.azure.cosmosdb.cassandra -DartifactId=cassandra-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 
    
  2. cassandra-demo 폴더를 찾습니다. 텍스트 편집기를 사용하여 생성된 pom.xml 파일을 엽니다.

    pom.xml 파일에 표시된 대로 Cassandra 종속성을 추가하고 프로젝트에 필요한 플러그 인을 빌드합니다.

  3. cassandra-demo\src\main 폴더 아래에서 resources라는 새 폴더를 만듭니다. 리소스 폴더 아래에서 config.properties 및 log4j.properties 파일을 추가합니다.

    • config.properties 파일은 API for Cassandra 계정의 연결 엔드포인트 및 키 값을 저장합니다.

    • log4j.properties 파일은 API for Cassandra와 상호 작용하는 데 필요한 로깅 수준을 정의합니다.

  4. src/main/java/com/azure/cosmosdb/cassandra/ 폴더로 이동합니다. cassandra 폴더 내에서 utils라는 또 다른 폴더를 만듭니다. 새 폴더는 API for Cassandra 계정에 연결하는 데 필요한 유틸리티 클래스를 저장합니다.

    CassandraUtils 클래스를 추가하여 클러스터를 만들고 Cassandra 세션을 열고 닫습니다. 클러스터에서 Azure Cosmos DB의 API for Cassandra 계정에 연결하고 액세스할 세션을 반환합니다. Configurations 클래스를 사용하여 config.properties 파일에서 연결 문자열 정보를 읽습니다.

  5. Java 샘플은 사용자 정보(예: 사용자 이름, 사용자 ID 및 사용자 도시)가 있는 데이터베이스를 만듭니다. main 함수의 사용자 세부 정보에 액세스하려면 get 및 set 메서드를 정의해야 합니다.

    get 및 set 메서드를 사용하여 src/main/java/com/azure/cosmosdb/cassandra/ 폴더 아래에 User.java 클래스를 만듭니다.

데이터베이스 및 테이블 추가

이 섹션에서는 CQL을 사용하여 데이터베이스(키스페이스)와 테이블을 추가하는 방법을 설명합니다.

  1. src\main\java\com\azure\cosmosdb\cassandra 폴더 아래에서 repository라는 새 폴더를 만듭니다.

  2. UserRepository Java 클래스를 만들고 여기에 다음 코드를 추가합니다.

    package com.azure.cosmosdb.cassandra.repository; 
    import java.util.List; 
    import com.datastax.driver.core.BoundStatement; 
    import com.datastax.driver.core.PreparedStatement; 
    import com.datastax.driver.core.Row; 
    import com.datastax.driver.core.Session; 
    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    
    /** 
     * Create a Cassandra session 
     */ 
    public class UserRepository { 
    
        private static final Logger LOGGER = LoggerFactory.getLogger(UserRepository.class); 
        private Session session; 
        public UserRepository(Session session) { 
            this.session = session; 
        } 
    
        /** 
        * Create keyspace uprofile in cassandra DB 
         */ 
    
        public void createKeyspace() { 
             final String query = "CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }"; 
            session.execute(query); 
            LOGGER.info("Created keyspace 'uprofile'"); 
        } 
    
        /** 
         * Create user table in cassandra DB 
         */ 
    
        public void createTable() { 
            final String query = "CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)"; 
            session.execute(query); 
            LOGGER.info("Created table 'user'"); 
        } 
    } 
    
  3. src\main\java\com\azure\cosmosdb\cassandra 폴더를 찾아 examples라는 새 하위 폴더를 만듭니다.

  4. UserProfile Java 클래스를 만듭니다. 이 클래스에는 이전에 정의한 createKeyspace 및 createTable 메서드를 호출하는 main 메서드가 들어 있습니다.

    package com.azure.cosmosdb.cassandra.examples; 
    import java.io.IOException; 
    import com.azure.cosmosdb.cassandra.repository.UserRepository; 
    import com.azure.cosmosdb.cassandra.util.CassandraUtils; 
    import com.datastax.driver.core.PreparedStatement; 
    import com.datastax.driver.core.Session; 
    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    
    /** 
     * Example class which will demonstrate following operations on Cassandra Database on CosmosDB 
     * - Create Keyspace 
     * - Create Table 
     * - Insert Rows 
     * - Select all data from a table 
     * - Select a row from a table 
     */ 
    
    public class UserProfile { 
    
        private static final Logger LOGGER = LoggerFactory.getLogger(UserProfile.class); 
        public static void main(String[] s) throws Exception { 
            CassandraUtils utils = new CassandraUtils(); 
            Session cassandraSession = utils.getSession(); 
    
            try { 
                UserRepository repository = new UserRepository(cassandraSession); 
                //Create keyspace in cassandra database 
                repository.createKeyspace(); 
                //Create table in cassandra database 
                repository.createTable(); 
    
            } finally { 
                utils.close(); 
                LOGGER.info("Please delete your table after verifying the presence of the data in portal or from CQL"); 
            } 
        } 
    } 
    

앱 실행

  1. 명령 프롬프트 또는 터미널 창을 엽니다. 다음 코드 블록을 붙여넣습니다.

    이 코드는 프로젝트를 만든 폴더 경로로 디렉터리를 변경(cd)합니다. 그런 다음, mvn clean install 명령을 실행하여 대상 폴더 내에 cosmosdb-cassandra-examples.jar 파일을 생성합니다. 마지막으로 Java 애플리케이션을 실행합니다.

    cd cassandra-demo
    
    mvn clean install 
    
    java -cp target/cosmosdb-cassandra-examples.jar com.azure.cosmosdb.cassandra.examples.UserProfile 
    

    터미널 창에 키스페이스와 테이블이 작성되었다는 알림이 표시됩니다.

  2. 이제 Azure Portal에서 데이터 탐색기를 열어 키스페이스 및 테이블이 생성되었는지 확인합니다.

다음 단계

이 자습서에서는 Java 애플리케이션을 사용하여 Azure Cosmos DB의 API for Cassandra 계정, 데이터베이스 및 테이블을 만드는 방법을 알아보았습니다. 이제 다음 문서로 진행할 수 있습니다.