다음을 통해 공유


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

적용 대상: 카산드라

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

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

  • Cassandra 데이터베이스 계정을 만듭니다.
  • 계정 연결 문자열을 가져옵니다.
  • Maven 프로젝트 및 종속성을 만듭니다.
  • 데이터베이스 및 테이블을 추가합니다.
  • 앱을 실행하세요.

필수 구성 요소

  • Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • 최신 버전의 JDK(Java Development Kit)를 가져옵니다.
  • Maven 이진 보관 파일을 다운로드하여 설치합니다. Ubuntu에서 apt-get install maven을 실행하여 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에 대한 별도의 계정을 만들어야 합니다.

    이 자습서에서는 Cassandra 용 API와 함께 작동하는 테이블을 만들기 때문에 Cassandra를 선택합니다.

    Cassandra용 API에 대한 자세한 내용은 Apache Cassandra용 Azure Cosmos DB란?을 참조하세요.

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

    설정 설명
    구독 당신의 구독. 이 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 무료 계층을 사용하면 계정에서 처음 1,000RU/s 및 25GB의 스토리지를 무료로 사용할 수 있습니다. 무료 계층에 대해 자세히 알아봅니다.
    총 계정 처리량 제한 계정의 처리량을 제한하려면 선택합니다. 이 옵션은 계정의 총 처리량을 특정 값으로 제한하려는 경우에 유용합니다.

    참고

    Azure 구독당 최대 하나의 무료 계층 Azure Cosmos DB 계정을 가질 수 있습니다. 계정을 만들 때 옵트인해야 합니다. 무료 계층 할인 옵션이 보이지 않는 경우, 구독의 다른 계정에서 무료 계층이 사용 설정된 상태일 수 있습니다.

    Azure Cosmos DB for Apache Cassandra의 새 계정 페이지

  6. 전역 배포 탭에서 다음 세부 정보를 구성합니다. 이 자습서의 기본값을 사용합니다.

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

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

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

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

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

    Azure Portal 알림 창을 보여 주는 스크린샷.

  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-getting-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라는 새 폴더를 만듭니다. 폴더 아래에 resources 폴더와 config.propertieslog4j.properties 파일을 추가합니다.

    • config.properties 파일은 API for Cassandra 계정의 연결 엔드포인트 및 키 값을 저장합니다.
    • log4j.properties 파일은 API for Cassandra와 상호 작용하는 데 필요한 로깅 수준을 정의합니다.
  4. src/main/java/com/azure/cosmosdb/cassandra/ 폴더로 이동합니다. 폴더 내에서 cassandra 이름이 다른 폴더를 만듭니다 utils. 새 폴더는 Cassandra 계정에 대한 API에 연결하는 데 필요한 유틸리티 클래스를 저장합니다.

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

  5. Java 샘플은 사용자 이름, 사용자 ID 및 사용자 도시와 같은 사용자 정보를 사용하여 데이터베이스를 만듭니다. 기본 함수의 사용자 세부 정보에 액세스하려면 정의 getset 메서드가 필요합니다.

    폴더 안에 src/main/java/com/azure/cosmosdb/cassandra/ 클래스를 생성하고 get, set 메서드를 포함하세요.

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

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

  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 클래스를 만듭니다. 이 클래스는 앞에서 정의한 createKeyspacecreateTable 메서드를 호출하는 메인 메서드를 포함합니다.

    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, 데이터베이스 및 테이블에서 Cassandra용 API를 만드는 방법을 알아보았습니다. 이제 다음 문서로 진행할 수 있습니다.