기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

Qlik 오픈 레이크하우스의 데이터 집합 아키텍처

Qlik 오픈 레이크하우스에서 데이터 집합을 생성하면 저장소 테이블, 변경 테이블 및 뷰가 Qlik Talend Data Integration에 의해 자동으로 생성됩니다. 이러한 뷰를 쿼리하여 Iceberg 오픈 테이블 형식으로 저장된 현재 및 기록 데이터에 액세스할 수 있습니다.

직관적이고 안내된 사용자 인터페이스를 통해 데이터 파이프라인을 구축, 모델링 및 실행할 수 있습니다. 수동 코딩 없이 작업 데이터 저장소(ODS) 및 기록 데이터 저장소(HDS)에 대한 스키마를 자동으로 생성할 수 있습니다.

Qlik 데이터 게이트웨이 - 데이터 이동를 사용하는 Qlik 오픈 레이크하우스 데이터 파이프라인에 대한 아키텍처. 데이터는 S3에 저장되고 Iceberg 오픈 레이크하우스에 랜딩됩니다. 필요에 따라 아래에 표시된 대로 테이블을 데이터 웨어하우스로 미러링할 수 있습니다.

스키마

아티팩트는 내부 스키마 및 데이터 작업 스키마에서 생성됩니다.

  • 내부 스키마에는 여러 개의 파티션이 있는 물리적 테이블이 포함되어 있습니다.

  • 데이터 작업 스키마에는 데이터를 소비하는 데 사용할 수 있는 보기가 포함되어 있습니다.

    스키마가 둘 이상의 데이터 작업과 연결된 경우 각 데이터 작업은 테이블 및 뷰에 대해 고유한 접두사를 사용해야 합니다. 데이터 작업 설정에서 접두사를 설정할 수 있습니다.

이름 충돌에 대해 내부 스키마만 확인합니다. 다른 스키마의 경우 테이블 이름에 명명 충돌이 없는지 확인해야 합니다. 가장 좋은 방법은 내부 스키마 이름을 _internal이 추가된 데이터 작업 스키마와 동일한 이름으로 지정하는 것입니다. 이렇게 하면 모든 스키마와 접두사 조합이 고유해집니다.

정보 메모모든 테이블과 보기는 Qlik Talend Data Integration으로 관리됩니다. 다른 도구를 사용하여 데이터를 변경하지 마십시오.

테이블

각 소스 테이블에 대해 다음 형식을 사용하여 접미사 _internal을 사용하여 내부 스키마에 테이블이 만들어집니다.

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

이 테이블은 5개의 파티션으로 구성되어 있으며, 각 파티션은 데이터가 처리되고 저장되는 방식에 있어 고유한 목적을 갖습니다. 각 파티션은 데이터 수명 주기에서의 역할에 따라 테이블 열의 하위 집합을 활용합니다.

정보 메모내부 스키마의 테이블은 사전 고지 없이 변경될 수 있습니다. 가능하다면 주로 보기를 사용하여 데이터를 사용해야 합니다.

내부 데이터 집합은 소스 시스템에서 수신 데이터를 효율적으로 관리하도록 구성되어 실시간 수집 및 기록 추적을 지원합니다. 데이터 흐름은 아래에 설명된 여러 개의 특수 파티션을 통해 관리됩니다.

  • 파티션 변경 – 실시간 수집

    소스 시스템의 모든 변경 내용(삽입, 업데이트, 삭제)은 먼저 변경 파티션에 추가됩니다.

    • 원시 변경 로그 역할을 하는 파티션은 변환이 발생하기 전에 소스 활동에 대한 완전한 피드를 제공합니다.

    • 각 변경 내용에는 처리 방법을 나타내는 유형(I, U 또는 D)이 태그로 지정됩니다.

    • 이벤트는 발생하는 대로 소스에서 캡처됩니다. 파티션은 거의 실시간으로 업데이트됩니다.

    • 다음 설정이 레이크 랜딩 데이터 작업에 적용되는 경우 변경 파티션을 사용할 수 있습니다.

      • 일반 탭에서 업데이트 방법CDC로 설정됩니다.

      • 최대 로드가 활성화되었습니다.

  • Asset_state 파티션 - 진행률 추적

    변경 내용이 수집되면 Asset_state 파티션은 두 가지 주요 타임스탬프를 기록합니다.

    • 변경 내용이 마지막으로 변경 파티션에 추가된 시간.

    • 변경 내용이 현재 파티션에 마지막으로 적용된 시간.

    이를 통해 동기화 파이프라인에 대한 전체적인 가시성을 확보하고 지연을 모니터링하거나 문제를 해결하는 데 도움이 됩니다.

  • 현재 파티션(ODS) – 소스의 최신 복제본

    변경 파티션의 변경 내용은 소스 데이터의 최신 쿼리 최적화 복사본을 유지하기 위해 주기적으로 현재 파티션에 적용됩니다.

    • 업데이트를 적용하기 위해 백그라운드 작업이 자동으로 실행됩니다. 이는 고정된 일정이 아닌 누적된 변경 내용의 볼륨을 기준으로 합니다.

    • 초기 전체 로드는 현재 파티션에 직접 기록됩니다.

    • 이 파티션은 데이터의 현재 상태를 반영하며 효율적인 쿼리를 위해 설계되었습니다.

  • 이전 파티션(HDS) – 기록 데이터

    현재 파티션에서 레코드가 업데이트되거나 삭제되면 이전 버전의 복사본이 이전 파티션에 기록됩니다. 

    • 레코드에는 변경 내역과 데이터가 유효한 날짜 범위를 포함한 메타데이터가 포함되어 있습니다.

    • 이는 유형 2 천천히 변화하는 차원(SCD2)을 지원합니다.

    • 일반 탭에서 레코드 저장소 및 변경 레코드 저장소가 활성화된 경우 이전 파티션을 사용할 수 있습니다.

    • 레코드의 업데이트된 버전이 현재 파티션에 들어가면 이전 레코드는 레코드 추적을 위해 이전 파티션으로 이동됩니다.

  • 파티션 다시 로드

    다시 로드 파티션은 수동 또는 예약된 전체 다시 로드 중에 임시 스테이징 영역 역할을 합니다.

    • 새로운 데이터는 먼저 다시 로드 파티션에 기록됩니다.

    • 정기적인 유지 관리 작업은 일시 중지되기 전에 보류 중인 변경 내용을 모두 지웁니다.

    • 데이터는 현재 파티션과 비교되고, 차이점만 현재 파티션으로 이동됩니다.

    • 작업이 완료되면 다시 로드 파티션이 지워집니다.

    이 프로세스는 전체 다시 로드 작업 중에 기본 데이터 집합에 대한 중단을 최소화합니다.

현재 파티션

필드 유형 설명
hdr__key_hash VARBINARY(20) 모든 레코드 기본 키의 해시. 해시 형식은 SHA1입니다. 열은 백스페이스 문자로 구분됩니다.
hdr__from_timestamp TIMESTAMP

타임스탬프(UTC):

  • 전체 로드에서 가져온 데이터의 경우 이는 전체 로드 시작 시간입니다.

  • 변경 파티션에서 변경 내용이 발생하는 경우 이는 레코드의 타임스탬프 필드입니다.

hdr__operation VARCHAR(1)

이 레코드의 최신 작업.

  • D - 변경 파티션에서 삭제됨.

  • U - 변경 파티션에서 업데이트됨.

  • I - 변경 파티션에서 삽입됨.

  • L - 전체 로드 작업에 의해 삽입됨.

  • d - 비교 및 적용에서 삭제됩니다.

  • u - 비교 및 적용에서 업데이트됩니다.

  • i - 비교 및 적용에서 삽입됩니다.

hdr__inserted_timestamp TIMESTAMP 키가 처음 추가된 UTC 타임스탬프. 전체 로드를 사용할 때의 전체 로드 시작 시간.
hdr__modified_timestamp TIMESTAMP 마지막 업데이트가 적용된 타임스탬프(UTC).

사전 분할

필드 유형 설명
hdr__key_hash VARBINARY(20) 모든 레코드 기본 키의 해시
hdr__from_timestamp TIMESTAMP 타임스탬프(UTC).
hdr__to_timestamp TIMESTAMP 타임스탬프(UTC).
hdr__operation STRING(1)

이 레코드의 최신 작업

  • D - 변경 파티션에서 삭제됨.

  • U - 변경 파티션에서 업데이트됨.

  • I - 변경 파티션에서 삽입됨.

  • L - 전체 로드 작업에 의해 삽입됨.

  • d - 비교 및 적용에서 삭제됩니다.

  • u - 비교 및 적용에서 업데이트됩니다.

  • i - 비교 및 적용에서 삽입됩니다.

헤더가 현재였던 시작 날짜 및 시간 TIMESTAMP 최초 레코드가 현재인 타임스탬프(UTC).
헤더가 현재였던 종료 날짜 및 시간 TIMESTAMP 마지막으로 레코드가 현재인 타임스탬프(UTC).

파티션 변경

필드 유형 설명
hdr__change_identifier VARCHAR(50)

변경 식별자는 두 부분으로 구성된 문자열입니다.

  • 1/1/1970(10자리 문자열) 이후 밀리초 단위의 배치 실행 시작 타임스탬프.

  • 복제 게이트웨이에서 시퀀스 변경(35자).

hdr__operation VARCHAR(1)

이 레코드의 최신 작업

  • D - 변경 파티션에서 삭제됨.

  • U - 변경 파티션에서 업데이트됨.

  • I - 변경 파티션에서 삽입됨.

  • L - 전체 로드 작업에 의해 삽입됨.

  • d - 비교 및 적용에서 삭제됩니다.

  • u - 비교 및 적용에서 업데이트됩니다.

  • i - 비교 및 적용에서 삽입됩니다.

hdr__timestamp TIMESTAMP 타임스탬프(UTC).
hdr__key_hash BINARY(20) 모든 레코드 기본 키의 해시
hdr__inserted_timestamp TIMESTAMP Qlik이 변경 내용을 처리한 시간의 타임스탬프(UTC).

Asset_state 파티션

필드 유형 설명
hdr__apply_change_identifier VARCHAR(50) 현재 파티션에 적용된 최신 변경 내용의 변경 식별자.
hdr__copy_change_identifier VARCHAR(50) 변경 파티션에 추가된 최신 변경 내용의 변경 식별자.

파티션 다시 로드

다시 로드 파티션에서 사용되는 열은 현재 파티션과 동일합니다.

보기

만들어진 모든 보기는 거의 실시간으로 업데이트됩니다. 다음 보기는 쿼리 및 보고를 간소화하는 데 사용할 수 있습니다.

현재

현재 보기는 데이터의 가장 최신 상태를 반영합니다. 이 보기는 거의 실시간으로 업데이트된 소스 테이블의 복제본을 나타냅니다. 현재 및 변경 파티션의 데이터를 병합합니다.

이름: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

테이블 구조에 헤더 열이 추가되지 않습니다.

기록

데이터 작업 설정에서 기록이 활성화된 경우, 선택한 각 소스 테이블에 대한 기록 뷰가 데이터 자산 스키마에 생성됩니다. 기록 보기는 이전 및 변경 파티션의 데이터를 병합합니다. 변경 내용에 대한 완전한 타임라인을 제공하므로 감사나 기록 분석에 적합합니다.

이름: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>

다음 헤더 필드가 기록 보기에 추가됩니다.

필드 유형 설명
hdr__key_hash BINARY(20) 모든 레코드 기본 키의 해시
hdr__from_timestamp TIMESTAMP 소스 시스템에서 변경이 발생한 타임스탬프. 이는 사용자가 처음 변경한 시점을 반영합니다.
hdr__to_timestamp TIMESTAMP 소스 시스템에서 변경 내용이 되돌려지거나 업데이트된 타임스탬프.
hdr__store VARCHAR(10)

이는 레코드가 있는 위치를 나타냅니다.

  • CURRENT - 레코드가 현재 파티션에 있는 경우.

  • PRIOR - 레코드가 레코드 데이터가 있는 이전 파티션에 있는 경우.

hdr__operation STRING(1)

이 레코드의 최신 작업

  • D - 변경 파티션에서 삭제됨.

  • U - 변경 파티션에서 업데이트됨.

  • I - 변경 파티션에서 삽입됨.

  • L - 전체 로드 작업에 의해 삽입됨.

  • d - 비교 및 적용에서 삭제됩니다.

  • u - 비교 및 적용에서 업데이트됩니다.

  • i - 비교 및 적용에서 삽입됩니다.

hdr__deleted 비트 hdr__operation이 D인지 d인지에 따라 레코드가 일시 삭제되었는지 여부를 나타냅니다.
hdr__was _current_from_timestamp TIMESTAMP 이 행이 현재 파티션에 들어온 시간(UTC)입니다. 이는 일반적으로 저장 작업이 실행되고 변경 내용이 적용된 경우입니다.
hdr__was _current_to_timestamp TIMESTAMP 예를 들어, 최신 버전으로 인해 행이 현재 테이블에서 제거된 시간(UTC)입니다.

정보 메모현재 및 기록 보기는 변경 내용 파티션에 의존하며 항상 실시간에 가깝습니다. 하지만 쿼리 성능이 느린 경우 현재 또는 이전 파티션에 아직 적용되지 않은 많은 변경 내용이 원인일 수 있습니다. 병합되지 않은 델타는 쿼리 시점에 더 많은 처리가 필요하므로 액세스 속도가 느려집니다.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 알려 주십시오!