자습서: Azure Cosmos DB에서 Cassandra API 계정으로 데이터 마이그레이션Tutorial: Migrate your data to Cassandra API account in Azure Cosmos DB

적용 대상: Cassandra API

개발자는 온-프레미스 또는 클라우드에서 실행되는 기존 Cassandra 워크로드를 가질 수 있으며 Azure로 마이그레이션할 수 있습니다.As a developer, you might have existing Cassandra workloads that are running on-premises or in the cloud, and you might want to migrate them to Azure. 이러한 워크로드를 Azure Cosmos DB의 Cassandra API 계정으로 마이그레이션할 수 있습니다.You can migrate such workloads to a Cassandra API account in Azure Cosmos DB. 이 자습서는 Apache Cassandra 데이터를 Azure Cosmos DB의 Cassandra API 계정으로 마이그레이션할 수 있는 다양한 옵션에 대한 지침을 제공합니다.This tutorial provides instructions on different options available to migrate Apache Cassandra data into the Cassandra API account in Azure Cosmos DB.

이 자습서에서 다루는 작업은 다음과 같습니다.This tutorial covers the following tasks:

  • 마이그레이션 계획Plan for migration
  • 마이그레이션을 위한 필수 조건Prerequisites for migration
  • cqlsh COPY 명령을 사용하여 데이터 마이그레이션Migrate data using cqlsh COPY command
  • Spark를 사용하여 데이터 마이그레이션Migrate data using Spark

Azure 구독이 아직 없는 경우 시작하기 전에 무료 계정을 만듭니다.If you don’t have an Azure subscription, create a free account before you begin.

마이그레이션을 위한 필수 조건Prerequisites for migration

  • 처리량 요구 사항 예측: Azure Cosmos DB에서 데이터를 Cassandra API 계정으로 마이그레이션하려면 먼저 워크로드에 대한 처리량 요구 사항을 예측해야 합니다.Estimate your throughput needs: Before migrating data to the Cassandra API account in Azure Cosmos DB, you should estimate the throughput needs of your workload. 일반적으로 CRUD 작업에 필요한 평균 처리량부터 시작한 다음, ETL(추출, 변환 및 로드) 또는 급증하는 작업에 필요한 추가 처리량을 포함하는 것이 좋습니다.In general, it's recommended to start with the average throughput required by the CRUD operations and then include the additional throughput required for the Extract Transform Load (ETL) or spiky operations. 마이그레이션을 계획하려면 다음과 같은 세부 정보가 필요합니다.You need the following details to plan for migration:

    • 기존 또는 예상 데이터 크기: 최소 데이터베이스 크기 및 처리량 요구 사항을 정의합니다.Existing data size or estimated data size: Defines the minimum database size and throughput requirement. 새 애플리케이션의 데이터 크기를 예측할 경우 데이터가 행 전체에 균일하게 분포되어 있다고 가정하고 데이터 크기를 곱하여 값을 추정하면 됩니다.If you are estimating data size for a new application, you can assume that the data is uniformly distributed across the rows and estimate the value by multiplying with the data size.

    • 필요한 처리량: 대략적인 읽기(쿼리/가져오기) 및 쓰기(업데이트/삭제/삽입) 처리량 속도입니다.Required throughput: Approximate read (query/get) and write (update/delete/insert) throughput rate. 이 값은 안정적인 상태 데이터 크기와 함께 필요한 요청 단위를 컴퓨팅하는 데 필요합니다.This value is required to compute the required request units along with steady state data size.

    • 스키마: cqlsh를 통해 기존 Cassandra 클러스터에 연결하고 Cassandra에서 스키마를 내보냅니다.The schema: Connect to your existing Cassandra cluster through cqlsh and export the schema from Cassandra:

      cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
      

      기존 워크로드의 요구 사항을 확인한 후에는 수집한 처리량 요구 사항에 따라 Azure Cosmos 계정, 데이터베이스 및 컨테이너를 만들어야 합니다.After you identify the requirements of your existing workload, you should create an Azure Cosmos account, database, and containers according to the gathered throughput requirements.

    • 작업에 대한 RU 요금 결정: Cassandra API에서 지원되는 SDK 중 하나를 사용하여 RU를 결정할 수 있습니다.Determine the RU charge for an operation: You can determine the RUs by using any of the SDKs supported by the Cassandra API. 다음 예제는 RU 비용 가져오기의 .NET 버전을 보여 줍니다.This example shows the .NET version of getting RU charges.

      var tableInsertStatement = table.Insert(sampleEntity);
      var insertResult = await tableInsertStatement.ExecuteAsync();
      
      foreach (string key in insertResult.Info.IncomingPayload)
        {
           byte[] valueInBytes = customPayload[key];
           double value = Encoding.UTF8.GetString(valueInBytes);
           Console.WriteLine($"CustomPayload:  {key}: {value}");
        }
      
  • 필요한 처리량 할당: 요구 사항이 증가함에 따라 Azure Cosmos DB에서 스토리지 및 처리량의 크기를 자동으로 조정할 수 있습니다.Allocate the required throughput: Azure Cosmos DB can automatically scale storage and throughput as your requirements grow. Azure Cosmos DB 요청 단위 계산기를 사용하여 처리량 수요를 예측할 수 있습니다.You can estimate your throughput needs by using the Azure Cosmos DB request unit calculator.

  • Cassandra API 계정에 테이블 만들기: 데이터 마이그레이션을 시작하기 전에 Azure Portal 또는 cqlsh에서 모든 테이블을 미리 만듭니다.Create tables in the Cassandra API account: Before you start migrating data, pre-create all your tables from the Azure portal or from cqlsh. 데이터베이스 수준 처리량이 있는 Azure Cosmos 계정으로 마이그레이션하는 경우에는 Azure Cosmos 컨테이너를 만들 때 파티션 키를 제공해야 합니다.If you are migrating to an Azure Cosmos account that has database level throughput, make sure to provide a partition key when creating the Azure Cosmos containers.

  • 처리량 증가: 데이터 마이그레이션 기간은 Azure Cosmos DB의 테이블에 대해 프로비전하는 처리량에 따라 달라집니다.Increase throughput: The duration of your data migration depends on the amount of throughput you provisioned for the tables in Azure Cosmos DB. 마이그레이션 기간에 대한 처리량을 늘립니다.Increase the throughput for the duration of migration. 처리량이 높을수록 속도 제한을 피하고 마이그레이션 시간을 단축할 수 있습니다.With the higher throughput, you can avoid rate limiting and migrate in less time. 마이그레이션을 완료한 후에는 비용을 절약하기 위해 처리량을 줄이세요.After you've completed the migration, decrease the throughput to save costs. Azure Cosmos 계정은 원본 데이터베이스와 같은 지역에 두는 것이 좋습니다.It’s also recommended to have the Azure Cosmos account in the same region as your source database.

  • TLS 사용: Azure Cosmos DB에는 엄격한 보안 요구 사항과 표준이 있습니다.Enable TLS: Azure Cosmos DB has strict security requirements and standards. 계정과 상호 작용하는 경우 TLS를 사용해야 합니다.Be sure to enable TLS when you interact with your account. SSH와 함께 CQL을 사용하는 경우 TLS 정보를 제공할 수 있는 옵션이 있습니다.When you use CQL with SSH, you have an option to provide TLS information.

데이터 마이그레이션 옵션Options to migrate data

다음 옵션을 사용하여 기존 Cassandra 워크로드에서 Azure Cosmos DB로 데이터를 옮길 수 있습니다.You can move data from existing Cassandra workloads to Azure Cosmos DB by using the following options:

cqlsh COPY 명령을 사용하여 데이터 마이그레이션Migrate data using cqlsh COPY command

CQL COPY 명령은 로컬 데이터를 Azure Cosmos DB의 Cassandra API 계정에 복사하는 데 사용됩니다.The CQL COPY command is used to copy local data to the Cassandra API account in Azure Cosmos DB. 다음 단계에 따라 데이터를 복사합니다.Use the following steps to copy data:

  1. Cassandra API 계정의 연결 문자열 정보를 확보합니다.Get your Cassandra API account’s connection string information:

    • Azure Portal에 로그인하고, Azure Cosmos 계정으로 이동합니다.Sign in to the Azure portal, and navigate to your Azure Cosmos account.

    • cqlsh를 통해 Cassandra API 계정에 연결하는 데 필요한 모든 정보가 들어있는 연결 문자열 창을 엽니다.Open the Connection String pane that contains all the information that you need to connect to your Cassandra API account from cqlsh.

  2. 포털의 연결 정보를 사용하여 cqhsh에 로그인합니다.Sign in to cqlsh using the connection information from the portal.

  3. CQL COPY 명령을 사용하여 로컬 데이터를 Cassandra API 계정에 복사합니다.Use the CQL COPY command to copy local data to the Cassandra API account.

    COPY exampleks.tablename FROM filefolderx/*.csv 
    

Spark를 사용하여 데이터 마이그레이션Migrate data using Spark

다음 단계를 따라 Spark를 사용하여 데이터를 Cassandra API 계정으로 마이그레이션합니다.Use the following steps to migrate data to the Cassandra API account with Spark:

Azure 가상 머신이나 다른 클라우드의 기존 클러스터에 데이터가 있는 경우 Spark 작업을 사용하여 데이터를 마이그레이션하는 것이 좋습니다.Migrating data by using Spark jobs is a recommended option if you have data residing in an existing cluster in Azure virtual machines or any other cloud. 이 옵션을 사용하려면 Spark를 한 번 또는 정기적으로 중개자로 설정해야 합니다.This option requires Spark to be set up as an intermediary for one time or regular ingestion. 온-프레미스와 Azure 사이에 Azure ExpressRoute 연결을 사용하면 마이그레이션 속도를 높일 수 있습니다.You can accelerate this migration by using Azure ExpressRoute connectivity between on-premises and Azure.

리소스 정리Clean up resources

더 이상 필요 없는 경우 리소스 그룹, Azure Cosmos 계정 및 모든 관련 리소스를 삭제해도 됩니다.When they're no longer needed, you can delete the resource group, the Azure Cosmos account, and all the related resources. 삭제하려면 가상 머신의 리소스 그룹을 선택하고, 삭제 를 선택한 다음, 삭제할 리소스 그룹의 이름을 확인합니다.To do so, select the resource group for the virtual machine, select Delete , and then confirm the name of the resource group to delete.

다음 단계Next steps

이 자습서에서는 Azure Cosmos DB의 Cassandra API 계정으로 데이터를 마이그레이션하는 방법을 알아보았습니다.In this tutorial, you've learned how to migrate your data to Cassandra API account in Azure Cosmos DB. 이제 다른 Azure Cosmos DB 개념에 대해 자세히 알아보기 위해 다음 문서를 진행할 수 있습니다.You can now proceed to the following article to learn about other Azure Cosmos DB concepts: