Netezza 마이그레이션을 위한 디자인 및 성능

이 문서는 Netezza에서 Azure Synapse Analytics로 마이그레이션하는 방법에 대한 지침을 제공하는 7부작 시리즈 중 1부입니다. 이 문서는 디자인 및 성능에 대한 모범 사례에 중점을 두고 있습니다.

개요

IBM의 지원 종료로 인해 Netezza 데이터 웨어하우스 시스템의 많은 기존 사용자는 최신 클라우드 환경이 제공하는 혁신을 활용하기를 원합니다. IaaS(Infrastructure-as-a-Service) 및 PaaS(Platform-as-a-Service) 클라우드 환경을 사용하면 인프라 유지 관리 및 플랫폼 개발과 같은 작업을 클라우드 공급자에게 위임할 수 있습니다.

단순한 데이터베이스가 아닌 Azure 환경에는 포괄적인 기능 및 도구 세트가 포함되어 있습니다.

Netezza와 Azure Synapse Analytics는 둘 다 매우 큰 데이터 볼륨에서 높은 쿼리 성능을 달성하기 위해 MPP(대규모 병렬 처리) 기술을 사용하는 SQL 데이터베이스이지만 접근 방식에서 몇 가지 기본적인 차이점이 있습니다.

  • 레거시 Netezza 시스템은 자주 온-프레미스에 설치되고 전용 하드웨어를 사용하는 반면, Azure Synapse는 클라우드 기반이며 Azure 스토리지 및 컴퓨팅 리소스를 사용합니다.

  • Netezza 구성 업그레이드는 추가적인 실제 하드웨어와 잠재적으로 긴 데이터베이스 재구성 또는 덤프 및 다시 로드를 포함하는 주요 작업입니다. 스토리지와 컴퓨팅 리소스는 Azure 환경에서 분리되어 있고 탄력적인 스케일링 기능이 있으므로 이러한 리소스를 독립적으로 위 또는 아래로 스케일링 기능을 활용할 수 있습니다.

  • 리소스 사용률과 비용을 줄이기 위해 필요에 따라 Azure Synapse를 일시 중지하거나 크기를 조정할 수 있습니다.

Microsoft Azure는 Azure Synapse와 지원 도구 및 기능의 에코시스템을 포함하는 전 세계적으로 사용 가능하고 매우 안전하며 스케일링 가능한 클라우드 환경입니다. 다음은 Azure Synapse 에코시스템을 요약해서 보여주는 다이어그램입니다.

Chart showing the Azure Synapse ecosystem of supporting tools and capabilities.

Azure Synapse는 자주 사용하는 데이터에 대해 MPP 및 여러 수준의 자동화된 캐싱과 같은 기술을 사용하여 동급 최고의 관계형 데이터베이스 성능을 제공합니다. Azure Synapse를 다른 자주 사용되는 클라우드 데이터 웨어하우스 제품과 비교하는 GigaOm에서 최근에 실행한 것과 같은 독립적인 벤치마크에서 이러한 기술의 결과를 확인할 수 있습니다. Azure Synapse 환경으로 마이그레이션하는 고객은 다음과 같은 많은 이점을 누릴 수 있습니다.

  • 성능 및 가성비 향상

  • 민첩성 증가 및 가치 창출 시간 단축

  • 더 빠른 서버 배포 및 애플리케이션 개발.

  • 탄력적 확장성 - 실제로 사용한 만큼만 지불합니다.

  • 보안/규정 준수 향상

  • 스토리지 및 재해 복구 비용 절감.

  • 전체 TCO 감소, 보다 철저한 비용 관리, OPEX(운영 지출) 간소화

이러한 이점을 최대화하려면 신규 또는 기존 데이터 및 애플리케이션을 Azure Synapse 플랫폼으로 마이그레이션하세요. 많은 조직에서 마이그레이션에는 레거시 데이터 웨어하우스를 Netezza와 같은 레거시 온-프레미스 플랫폼에서 Azure Synapse로 이동하는 작업이 포함됩니다. 상위 수준에서 마이그레이션 프로세스에는 다음 단계가 포함됩니다.

    준비 🡆

  • 범위 정의 - 마이그레이션 대상.

  • 마이그레이션을 위한 데이터 및 프로세스 인벤토리를 빌드합니다.

  • 데이터 모델 변경 내용을 정의합니다(있는 경우).

  • 원본 데이터 추출 메커니즘을 정의합니다.

  • 사용할 적절한 Azure 및 타사 도구와 기능을 식별합니다.

  • 새 플랫폼에서 초기에 담당자를 학습합니다.

  • Azure 대상 플랫폼을 설정합니다.

    마이그레이션 🡆

  • 작고 간단하게 시작합니다.

  • 가능한 모든 곳에서 자동화합니다.

  • Azure 기본 제공 도구 및 기능을 활용하여 마이그레이션 활동을 줄입니다.

  • 테이블 및 보기에 대한 메타데이터를 마이그레이션합니다.

  • 유지 관리할 기록 데이터를 마이그레이션합니다.

  • 저장 프로시저 및 업무 프로세스를 마이그레이션하거나 리팩터링합니다.

  • ETL/ELT 증분 로드 프로세스를 마이그레이션하거나 리팩터링합니다.

    마이그레이션 후

  • 프로세스의 모든 단계를 모니터링하고 문서화합니다.

  • 얻은 환경을 사용하여 향후 마이그레이션을 위한 템플릿을 빌드합니다.

  • 필요한 경우 데이터 모델을 다시 설계합니다(새로운 플랫폼 성능 및 확장성 사용).

  • 애플리케이션 및 쿼리 도구를 테스트합니다.

  • 쿼리 성능을 벤치마킹하고 최적화합니다.

이 문서에서는 기존 Netezza 환경에서 Azure Synapse로 데이터 웨어하우스를 마이그레이션할 때 성능 최적화를 위한 일반 정보 및 지침을 제공합니다. 성능 최적화의 목표는 스키마 마이그레이션 후 Azure Synapse에서 동일하거나 더 나은 데이터 웨어하우스 성능을 달성하는 것입니다.

디자인 고려 사항

마이그레이션 범위

Netezza 환경에서 마이그레이션을 준비할 때 다음 마이그레이션 선택 사항을 고려합니다.

초기 마이그레이션을 위한 워크로드 선택

일반적으로 레거시 Netezza 환경은 시간이 지남에 따라 여러 주제 영역과 혼합 워크로드를 포괄하도록 발전했습니다. 마이그레이션 프로젝트를 시작할 위치를 결정할 때 다음을 수행할 수 있는 영역을 선택합니다.

  • 새로운 환경의 이점을 신속하게 제공하여 Azure Synapse로의 마이그레이션 가능성을 입증합니다.

  • 사내 기술 담당자가 다른 영역을 마이그레이션할 때 사용할 프로세스 및 도구에 대한 관련 환경을 얻을 수 있습니다.

  • 원본 Netezza 환경과 이미 있는 현재 도구 및 프로세스와 관련된 추가 마이그레이션을 위한 템플릿을 만듭니다.

Netezza 환경에서 초기 마이그레이션에 적합한 후보는 앞의 항목을 지원하며 다음과 같습니다.

  • OLTP(온라인 트랜잭션 처리) 워크로드가 아닌 BI/Analytics 워크로드를 구현합니다.

  • 최소한의 수정으로 마이그레이션할 수 있는 별모양 또는 눈송이 스키마와 같은 데이터 모델이 있습니다.

마이그레이션해야 하는 개체의 인벤토리를 만들고 마이그레이션 프로세스를 문서화합니다.

초기 마이그레이션에서 마이그레이션된 데이터의 양은 Azure Synapse 환경의 기능과 이점을 보여 주기에 충분히 커야 하지만 가치를 빠르게 보여 주기에는 너무 크지 않아야 합니다. 1-10TB 범위의 크기가 일반적입니다.

초기 마이그레이션 프로젝트의 경우 위험, 노력 및 마이그레이션 시간을 최소화하여 Azure 클라우드 환경의 이점을 빠르게 확인할 수 있습니다. 리프트 앤 시프트 및 단계적 마이그레이션 방법은 모두 초기 마이그레이션 범위를 데이터 마트로만 제한하고 ETL 마이그레이션 및 기록 데이터 마이그레이션과 같은 광범위한 마이그레이션 측면을 다루지 않습니다. 그러나 마이그레이션된 데이터 마트 계층이 데이터와 필요한 빌드 프로세스로 채워지면 프로젝트의 이후 단계에서 이러한 측면을 해결할 수 있습니다.

리프트 앤 시프트 마이그레이션 대 단계적 방법

일반적으로 계획된 마이그레이션의 목적과 범위에 관계없이 두 가지 형식의 마이그레이션이 있습니다. 즉, 있는 그대로의 리프트 앤 시프트와 변경 내용을 통합하는 단계적 방법입니다.

리프트 앤 시프트

리프트 앤 시프트 마이그레이션에서는 별모양 스키마와 같은 기존 데이터 모델이 변경되지 않고 새 Azure Synapse 플랫폼으로 마이그레이션됩니다. 이 방법은 Azure 클라우드 환경으로 이동하는 이점을 실현하는 데 필요한 작업을 줄여 위험과 마이그레이션 시간을 최소화합니다. 리프트 앤 시프트 마이그레이션은 다음 시나리오에 적합합니다.

  • 마이그레이션할 단일 데이터 마트가 있는 기존 Netezza 환경이 있거나
  • 이미 잘 설계된 별모양 또는 눈송이 스키마에 있는 데이터가 있는 기존 Netezza 환경이 있습니다.
  • 최신 클라우드 환경으로 전환해야 하는 시간과 비용의 압박을 받고 있습니다.

후속 단계에서 데이터 모델 변경을 구현하더라도 리프트 앤 시프트는 좋은 시작점입니다.

변화를 통합하는 단계적 접근

레거시 데이터 웨어하우스가 오랜 기간 동안 발전한 경우 필요한 성능 수준을 유지하기 위해 이를 다시 설계해야 할 수 있습니다. 또한 IoT(사물 인터넷) 스트림과 같은 새로운 데이터를 지원하기 위해 다시 엔지니어링해야 할 수도 있습니다. 재설계 프로세스의 일부로 Azure Synapse로 마이그레이션하면 확장성 있는 클라우드 환경의 이점을 얻게 됩니다. 마이그레이션에는 Inmon 모델에서 데이터 자격 증명 모음으로의 이동과 같은 기본 데이터 모델의 변경도 포함될 수 있습니다.

Microsoft는 기존 데이터 모델을 있는 그대로 Azure로 이동하고 Azure 환경의 성능과 유연성을 사용하여 리엔지니어링 변경 내용을 적용하는 것이 좋습니다. 이렇게 하면 Azure의 기능을 사용하여 기존 원본 시스템에 영향을 주지 않고 변경할 수 있습니다.

Azure Data Factory를 사용하여 메타데이터 기반 마이그레이션 구현

Azure 환경의 기능을 사용하여 마이그레이션 프로세스를 자동화하고 오케스트레이션할 수 있습니다. 이 방법은 이미 거의 용량에 가깝게 실행되고 있는 기존 Netezza 환경의 성능 저하를 최소화합니다.

Azure Data Factory는 데이터 이동 및 데이터 변환을 조정하고 자동화하는 클라우드에서 데이터 기반 워크플로 만들기를 지원하는 클라우드 기반 데이터 통합 서비스입니다. Data Factory를 사용하여 서로 다른 데이터 저장소에서 데이터를 수집하는 데이터 기반 워크플로(파이프라인)를 만들고 예약할 수 있습니다. Data Factory는 Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics 및 Azure Machine Learning과 같은 컴퓨팅 서비스를 사용하여 데이터를 처리하고 변환할 수 있습니다.

Data Factory 기능을 사용하여 마이그레이션 프로세스를 관리하려는 경우 마이그레이션할 모든 데이터 테이블과 해당 위치를 나열하는 메타데이터를 만듭니다.

Netezza와 Azure Synapse의 디자인 차이점

앞서 언급했듯이 Netezza와 Azure Synapse Analytics 데이터베이스 간의 방법에는 몇 가지 기본적인 차이점이 있으며 이러한 차이점에 대해서는 다음에 설명합니다.

여러 데이터베이스와 단일 데이터베이스 및 스키마

Netezza 환경에는 여러 개의 개별 데이터베이스가 포함되어 있는 경우가 많습니다. 예를 들어, 데이터 수집 및 준비 테이블, 코어 웨어하우스 테이블, 데이터 마트(의미 체계 계층이라고도 함)를 위한 별도의 데이터베이스가 있을 수 있습니다. ETL 또는 ELT 파이프라인 프로세스는 데이터베이스 간 조인을 구현하고 별도의 데이터베이스 간에 데이터를 이동할 수 있습니다.

대조적으로 Azure Synapse 환경은 단일 데이터베이스를 포함하고 스키마를 사용하여 테이블을 논리적으로 별도의 그룹으로 분리합니다. 대상 Azure Synapse 데이터베이스 내에서 일련의 스키마를 사용하여 Netezza 환경에서 마이그레이션된 별도의 데이터베이스를 모방하는 것이 좋습니다. Netezza 환경에서 이미 스키마를 사용하는 경우 기존 Netezza 테이블과 보기를 새 환경으로 이동할 때 새 명명 규칙을 사용해야 할 수 있습니다. 예를 들어 기존 Netezza 스키마와 테이블 이름을 새 Azure Synapse 테이블 이름에 연결하고, 새 환경에서 스키마 이름을 사용하여 원래의 별도 데이터베이스 이름을 유지할 수 있습니다. 스키마 통합 이름에 점이 있는 경우 Azure Synapse Spark에 문제가 있을 수 있습니다. 기본 테이블 위에 SQL 보기를 사용하여 논리 구조를 유지할 수 있지만 해당 방법에는 잠재적인 단점이 있습니다.

  • Azure Synapse의 보기는 읽기 전용이므로 데이터에 대한 모든 업데이트가 기본 테이블에서 수행되어야 합니다.

  • 이미 하나 이상의 보기 계층이 존재할 수 있으며 중첩된 보기는 문제를 해결하기 어렵기 때문에 보기 계층을 추가하면 성능과 지원 가능성에 영향을 미칠 수 있습니다.

Azure Synapse 내에서 여러 데이터베이스를 단일 데이터베이스로 결합하고 스키마 이름을 사용하여 테이블을 논리적으로 분리합니다.

테이블 고려 사항

서로 다른 환경 간에 테이블을 마이그레이션할 때 일반적으로 원시 데이터와 이를 설명하는 메타데이터만 실제로 마이그레이션됩니다. 인덱스와 같은 원본 시스템의 다른 데이터베이스 요소는 일반적으로 새 환경에서 불필요하거나 다르게 구현될 수 있으므로 마이그레이션되지 않습니다.

인덱스와 같은 원본 환경의 성능 최적화는 새 환경에서 성능 최적화를 추가할 수 있는 위치를 나타냅니다. 예를 들어 원본 Netezza 환경의 쿼리에서 영역 맵을 자주 사용하는 경우 Azure Synapse 내에서 비클러스터형 인덱스를 만들어야 한다는 의미입니다. 테이블 복제와 같은 다른 네이티브 성능 최적화 기술은 유사 인덱스를 만드는 것보다 더 적합할 수 있습니다.

기존 인덱스는 마이그레이션된 웨어하우스의 인덱싱 후보를 나타냅니다.

지원되지 않는 Netezza 데이터베이스 개체 형식

Netezza 관련 기능은 Azure Synapse 기능으로 대체할 수 있는 경우가 많습니다. 그러나 일부 Netezza 데이터베이스 개체는 Azure Synapse에서 직접 지원되지 않습니다. 지원되지 않는 Netezza 데이터베이스 개체에 대한 다음 목록에서는 Azure Synapse에서 동일한 기능을 구현하는 방법을 설명합니다.

  • 영역 맵: Netezza에서 영역 맵은 다음 열 형식에 대해 자동으로 생성 및 유지 관리되며 쿼리 시 검사할 데이터의 양을 제한하는 데 사용됩니다.

    • 길이가 8바이트 이하인 INTEGER 열.
    • 임시 열(예: DATE, TIMETIMESTAMP).
    • CHAR 열(구체화된 뷰의 일부이고 ORDER BY 절에 언급된 경우).

    NZ Toolkit에 포함된 nz_zonemap 유틸리티를 사용하여 영역 맵이 있는 열을 확인할 수 있습니다. Azure Synapse는 영역 맵을 포함하지 않지만 다른 사용자 정의 인덱스 유형 및/또는 분할을 사용하여 유사한 결과를 얻을 수 있습니다.

  • CBT(클러스터형 기본 테이블): Netezza에서 CBT는 일반적으로 수십억 개의 레코드를 포함할 수 있는 팩트 테이블에 사용됩니다. 이러한 거대한 테이블을 검사하려면 관련 레코드를 가져오기 위해 전체 테이블 검색이 필요할 수 있기 때문에 처리 시간이 상당히 깁니다. 제한적인 CBT에 대한 레코드를 구성하면 Netezza에서 동일하거나 가까운 범위에서 레코드를 그룹화할 수 있습니다. 이 프로세스는 검사해야 하는 데이터의 양을 줄여 성능을 개선시키는 영역 맵도 만듭니다.

    Azure Synapse에서 분할 및/또는 다른 인덱스를 사용하여 비슷한 효과를 얻을 수 있습니다.

  • 구체화된 뷰: Netezza는 구체화된 뷰를 지원하며, 많은 열 중 몇 개만 쿼리에서 정기적으로 사용되는 대형 테이블에 구체화된 뷰를 하나 이상 사용할 것을 권장합니다. 기본 테이블의 데이터가 업데이트될 때 시스템에서 자동으로 구체화된 뷰를 새로 고칩니다.

    Azure Synapse는 Netezza와 동일한 기능을 제공하는 구체화된 보기를 지원합니다.

Netezza 데이터 형식 매핑

대부분의 Netezza 데이터 형식은 Azure Synapse에 직접 대응되는 형식이 있습니다. 다음 표는 Netezza 데이터 형식을 Azure Synapse에 매핑하는 데 권장하는 방법을 보여줍니다.

Netezza 데이터 형식 Azure Synapse 데이터 형식
BIGINT BIGINT
BINARY VARYING(n) VARBINARY(n)
BOOLEAN BIT
BYTEINT TINYINT
CHARACTER VARYING(n) VARCHAR(n)
CHARACTER(n) CHAR(n)
DATE DATE(날짜)
DECIMAL(p,s) DECIMAL(p,s)
DOUBLE PRECISION FLOAT
FLOAT(n) FLOAT(n)
INTEGER INT
INTERVAL INTERVAL 데이터 형식은 현재 Azure Synapse에서 직접 지원되지 않지만 DATEDIFF와 같은 임시 함수를 사용하여 계산할 수 있습니다.
MONEY MONEY
NATIONAL CHARACTER VARYING(n) NVARCHAR(n)
NATIONAL CHARACTER(n) NCHAR(n)
NUMERIC(p,s) NUMERIC(p,s)
REAL REAL
SMALLINT SMALLINT
ST_GEOMETRY(n) ST_GEOMETRY와 같은 공간 데이터 형식은 현재 Azure Synapse에서 지원되지 않지만, 그 데이터는 VARCHAR 또는 VARBINARY로 저장할 수 있습니다.
TIME TIME
TIME WITH TIME ZONE DATETIMEOFFSET
timestamp DATETIME

마이그레이션 준비 단계에서 지원되지 않는 데이터 형식의 수와 유형을 평가합니다.

타사 공급업체에서 데이터 형식 매핑을 포함하여 마이그레이션을 자동화하는 도구와 서비스를 제공합니다. 이미 Netezza 환경에서 타사 ETL 도구를 사용하고 있으면 필요한 모든 데이터 변환을 구현하는 도구를 사용합니다.

SQL DML 구문 차이점

Netezza SQL과 Azure Synapse T-SQL의 SQL DML 구문에는 차이가 있습니다. 이러한 차이점은 Netezza 마이그레이션에 대한 SQL 문제 최소화에 자세히 설명되어 있습니다.

  • STRPOS: Netezza에서 STRPOS 함수는 문자열 내에서 하위 문자열의 위치를 반환합니다. Azure Synapse에서 이에 해당하는 함수는 CHARINDEX이며 인수의 순서는 반대입니다. 예를 들어 Netezza의 SELECT STRPOS('abcdef','def')...는 Azure Synapse의 SELECT CHARINDEX('def','abcdef')...와 동일합니다.

  • AGE: Netezza는 AGE 연산자를 지원하여 타임스탬프 또는 날짜 같은 두 temporal 값 사이의 간격(예: SELECT AGE('23-03-1956','01-01-2019') FROM...)을 제공합니다. Azure Synapse에서 DATEDIFF를 사용하여 간격을 가져옵니다(예: SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM...). 날짜 표현 시퀀스를 확인합니다.

  • NOW(): Netezza는 NOW()를 사용하여 Azure Synapse에서 CURRENT_TIMESTAMP를 나타냅니다.

함수, 저장 프로시저 및 시퀀스

Netezza와 같은 성숙한 환경에서 데이터 웨어하우스를 마이그레이션할 때 간단한 테이블 및 뷰 이외의 요소를 마이그레이션해야 할 수도 있습니다. 일반적으로 기본 제공 Azure 도구를 사용하는 것이 Azure Synapse용으로 해당 요소를 다시 코딩하는 것보다 더 효율적이므로 Azure 환경 내의 도구가 기능, 저장 프로시저 및 시퀀스의 기능을 바꿀 수 있는지 확인합니다.

준비 단계의 일부로 마이그레이션해야 하는 개체의 인벤토리를 만들고, 개체를 처리하는 방법을 정의하고, 마이그레이션 계획에 적절한 리소스를 할당합니다.

데이터 통합 파트너는 함수, 저장 프로시저 및 시퀀스의 마이그레이션을 자동화할 수 있는 도구와 서비스를 제공합니다.

다음 섹션에서는 함수, 저장 프로시저 및 시퀀스의 마이그레이션에 대해 자세히 설명합니다.

함수

대부분의 데이터베이스 제품과 마찬가지로 Netezza는 SQL 구현 내에서 시스템 및 사용자 정의 함수를 지원합니다. 레거시 데이터베이스 플랫폼을 Azure Synapse로 마이그레이션할 때 일반적인 시스템 함수는 일반적으로 변경 없이 마이그레이션될 수 있습니다. 일부 시스템 함수는 구문이 약간 다를 수 있지만 필요한 변경 내용은 자동화할 수 있습니다.

Azure Synapse에 동등한 함수가 없는 Netezza 시스템 함수 또는 임의의 사용자 정의 함수의 경우 대상 환경 언어를 사용하여 해당 함수를 다시 코딩합니다. Netezza 사용자 정의 함수는 nzlua 또는 C++ 언어를 사용하여 코딩됩니다. Azure Synapse는 Transact-SQL 언어를 사용하여 사용자 정의 함수를 구현합니다.

저장 프로시저

대부분의 최신 데이터베이스 제품은 데이터베이스 내 저장 프로시저를 지원합니다. Netezza는 이 목적을 위해 Postgres PL/pgSQL을 기반으로 하는 NZPLSQL 언어를 제공합니다. 저장 프로시저는 일반적으로 SQL 문과 프로시저 논리를 모두 포함하며 데이터 또는 상태를 반환합니다.

Azure Synapse는 T-SQL을 사용하는 저장 프로시저를 지원하므로 마이그레이션된 저장 프로시저를 해당 언어로 다시 코딩해야 합니다.

시퀀스

Netezza에서 시퀀스는 CREATE SEQUENCE를 사용하여 만든 명명된 데이터베이스 개체입니다. 시퀀스는 NEXT VALUE FOR 메서드를 통해 고유한 숫자 값을 제공합니다. 생성된 고유 번호를 기본 키의 대리 키 값으로 사용할 수 있습니다.

Azure Synapse는 CREATE SEQUENCE를 구현하지 않지만 계열에서 다음 시퀀스 번호를 생성하는 IDENTITY 열 또는 SQL 코드를 사용하여 시퀀스를 구현할 수 있습니다.

Netezza 환경에서 메타데이터 및 데이터 추출

DDL(데이터 정의 언어) 생성

ANSI SQL 표준은 DDL(데이터 정의 언어) 명령의 기본 구문을 정의합니다. 일부 DDL 명령(예: CREATE TABLECREATE VIEW)은 Netezza 및 Azure Synapse에 공통적이지만 구현별 기능을 제공하도록 확장되었습니다.

기존 Netezza CREATE TABLECREATE VIEW 스크립트를 편집하여 Azure Synapse에서 동등한 정의를 얻을 수 있습니다. 이렇게 하려면 수정된 데이터 형식을 사용하고 ORGANIZE ON과 같은 Netezza 관련 절을 제거하거나 수정해야 할 수 있습니다.

Netezza 환경 내에서 시스템 카탈로그 테이블은 현재 테이블과 뷰 정의를 지정합니다. 사용자가 관리하는 설명서와 달리 시스템 카탈로그 정보는 항상 완전하며 현재 테이블 정의와 동기화됩니다. nz_ddl_table과 같은 유틸리티를 사용하면 시스템 카탈로그 정보에 액세스하여 Azure Synapse에서 동등한 테이블을 만드는 CREATE TABLE DDL 문을 만들 수 있습니다.

유사한 결과를 가져오기 위해 시스템 카탈로그 정보를 처리하는 타사 마이그레이션 및 ETL 도구를 사용할 수도 있습니다.

Netezza에서 데이터 추출

nzsql 및 nzunload와 같은 표준 Netezza 유틸리티를 사용하거나 외부 테이블을 통해 Netezza 테이블에서 CSV 파일과 같은 평면 구분 파일로 원시 테이블 데이터를 추출할 수 있습니다. 그런 다음, gzip을 사용하여 평면 구분 파일을 압축하고 AzCopy 또는 Azure Data Box와 같은 Azure 데이터 전송 도구를 사용하여 압축된 파일을 Azure Blob Storage에 업로드할 수 있습니다.

가능한 한 효율적으로 테이블 데이터를 추출합니다. 가장 빠른 추출 방법인 외부 테이블 접근 방식을 사용합니다. 여러 추출을 병렬로 수행하여 데이터 추출 처리량을 최대화합니다. 다음 SQL 문은 외부 테이블 추출을 수행합니다.

CREATE EXTERNAL TABLE '/tmp/export_tab1.csv' USING (DELIM ',') AS SELECT * from <TABLENAME>;

충분한 네트워크 대역폭을 사용할 수 있는 경우 온-프레미스 Netezza 시스템에서 Azure Synapse 테이블 또는 Azure Blob Data Storage로 바로 데이터를 추출할 수 있습니다. 이렇게 하려면 Data Factory 프로세스 또는 타사 데이터 마이그레이션 또는 ETL 제품을 사용합니다.

가장 효율적인 데이터 추출을 위해 Netezza 외부 테이블을 사용합니다.

추출된 데이터 파일에는 CSV, ORC(Optimized Row Columnar) 또는 Parquet 형식으로 구분된 텍스트가 포함되어야 합니다.

Netezza 환경에서 데이터 및 ETL을 마이그레이션하는 방법에 대한 자세한 내용은 Netezza 마이그레이션을 위한 데이터 마이그레이션, ETL, 로드를 참조하세요.

Netezza 마이그레이션의 성능 권장 사항

성능 최적화의 목표는 Azure Synapse로 마이그레이션한 후 동일하거나 더 나은 데이터 웨어하우스 성능입니다.

성능 튜닝 방식 개념의 유사성

Netezza 데이터베이스에 대한 많은 성능 튜닝 개념은 Azure Synapse 데이터베이스에 유효합니다. 예시:

  • 데이터 배포를 사용하여 조인할 데이터를 동일한 처리 노드에 배치합니다.

  • 특정 열에 가장 작은 데이터 형식을 사용하면 스토리지 공간이 절약되고 쿼리 처리 속도가 빨라집니다.

  • 조인 처리를 최적화하고 데이터 변환의 필요성을 줄이기 위해 조인할 열의 데이터 형식이 동일한지 확인합니다.

  • 최적화 프로그램이 최상의 실행 계획을 생성할 수 있도록 하려면 통계가 최신 상태인지 확인합니다.

  • 기본 제공 데이터베이스 기능을 사용하여 성능을 모니터링하여 리소스가 효율적으로 사용되고 있는지 확인합니다.

마이그레이션 시작 시 Azure Synapse의 튜닝 옵션에 대해 우선적으로 숙지합니다.

성능 튜닝 방법의 차이점

이 섹션에서는 Netezza와 Azure Synapse 간의 낮은 수준의 성능 튜닝 구현 차이점을 강조합니다.

데이터 배포 옵션

성능을 위해 Azure Synapse는 다중 노드 아키텍처로 설계되었으며 병렬 처리를 사용합니다. 테이블 성능을 최적화하기 위해 Azure Synapse에서는 DISTRIBUTION, Netezza에서는 DISTRIBUTE ON을 사용하여 CREATE TABLE 문에 데이터 배포 옵션을 정의할 수 있습니다.

Netezza와 달리 Azure Synapse는 작은 테이블 복제를 통해 작은 테이블과 큰 테이블 간의 로컬 조인을 지원합니다. 예를 들어, 별모양 스키마 모델 내의 작은 차원 테이블과 큰 사실 테이블을 고려합니다. Azure Synapse는 모든 노드에서 더 작은 차원 테이블을 복제하여 큰 테이블의 모든 조인 키 값에 일치하는 로컬에서 사용 가능한 차원 행이 있는지 확인할 수 있습니다. 차원 테이블 복제의 오버헤드는 작은 차원 테이블에 대해 상대적으로 낮습니다. 큰 차원 테이블의 경우 해시 분포 방법이 더 적합합니다. 데이터 배포 옵션에 대한 자세한 내용은 복제 테이블 사용을 위한 디자인 지침분산 테이블 디자인 지침을 참조하세요.

데이터 인덱싱

Azure Synapse는 Netezza의 시스템 관리 영역 맵과 작동법 및 사용법이 다른 여러 사용자 정의 인덱싱 옵션을 지원합니다. Azure Synapse의 다양한 인덱싱 옵션에 대한 자세한 내용은 전용 SQL 풀 테이블의 인덱스를 참조하세요.

원본 Netezza 환경 내의 기존 시스템 관리형 영역 맵은 Azure Synapse 환경에서 인덱싱을 위한 후보 열 및 데이터 사용량에 대한 유용한 표시를 제공합니다.

데이터 분할

엔터프라이즈 데이터 웨어하우스에서 팩트 테이블에는 수십억 개의 행이 포함될 수 있습니다. 분할은 이러한 테이블을 별도의 부분으로 분할하여 처리된 데이터의 양을 줄여 유지 관리 및 쿼리 성능을 최적화합니다. Azure Synapse에서 CREATE TABLE 문은 테이블에 대한 분할 사양을 정의합니다.

분할에는 테이블당 하나의 필드만 사용할 수 있습니다. 많은 쿼리가 날짜 또는 날짜 범위로 필터링되기 때문에 해당 필드는 날짜 필드인 경우가 많습니다. CTAS(CREATE TABLE AS) 문을 사용하여 새 배포로 테이블을 다시 만들어 초기 로드 후 테이블의 분할을 변경할 수 있습니다. Azure Synapse의 분할에 대한 자세한 내용은 전용 SQL 풀에서 테이블 분할을 참조하세요.

데이터 테이블 통계

ETL/ELT 작업에 대한 통계 단계를 작성하여 데이터 테이블에 대한 통계를 최신 상태로 유지해야 합니다.

데이터 로드를 위한 PolyBase 또는 COPY INTO

PolyBase는 병렬 로드 스트림을 사용하여 데이터 웨어하우스에 대용량 데이터를 효율적으로 로드할 수 있도록 지원합니다. 자세한 내용은 PolyBase 데이터 로드 전략을 참조하세요.

COPY INTO는 또한 처리량이 많은 데이터 수집을 지원하며 다음을 수행합니다.

  • 폴더 및 하위 폴더 내의 모든 파일에서 데이터 검색.

  • 동일한 스토리지 계정의 여러 위치에서 데이터 검색. 쉼표로 구분된 경로를 사용하여 여러 위치를 지정할 수 있습니다.

  • Azure Data Lake Storage(ADLS) 및 Azure Blob Storage.

  • CSV, PARQUET 및 ORC 파일 형식.

워크로드 관리

혼합된 워크로드를 실행하면 사용량이 많은 시스템에서 리소스 문제가 발생할 수 있습니다. 성공적인 워크로드 관리 체계는 리소스를 효과적으로 관리하고, 매우 효율적인 리소스 사용률을 보장하며, ROI(투자 수익률)를 극대화합니다. 워크로드 분류, 워크로드 중요도워크로드 격리를 통해 워크로드가 시스템 리소스를 활용하는 방법을 더 잘 제어할 수 있습니다.

워크로드 관리 가이드에서는 워크로드를 분석하고 워크로드 중요도를 관리 및 모니터링하는 기술 및 리소스 클래스를 작업 그룹으로 변환하는 단계를 설명합니다. Azure PortalDMV의 T-SQL 쿼리를 사용하여 해당 리소스가 효율적으로 활용되도록 워크로드를 모니터링합니다.

다음 단계

Netezza 마이그레이션에 대한 ETL 및 로드에 대한 자세한 내용은 이 시리즈의 다음 문서인 Netezza 마이그레이션을 위한 데이터 마이그레이션, ETL, 로드를 참조하세요.