Qlik 오픈 레이크하우스의 데이터 세트 아키텍처
Qlik 오픈 레이크하우스에서 데이터 세트를 생성하면 스토리지 테이블, 변경 테이블 및 뷰가 Qlik Talend Data Integration에 의해 자동으로 생성됩니다. 이러한 뷰를 쿼리하여 Iceberg 개방형 테이블 형식으로 저장된 현재 및 과거 데이터에 액세스할 수 있습니다.
직관적이고 안내가 포함된 사용자 인터페이스를 통해 데이터 파이프라인을 구축, 모델링 및 실행할 수 있습니다. 수동 코딩 없이 운영 데이터 저장소(ODS) 및 과거 데이터 저장소(HDS)에 대한 스키마를 자동으로 생성할 수 있습니다.
Qlik 데이터 게이트웨이 - 데이터 이동를 사용하는 Qlik 오픈 레이크하우스 데이터 파이프라인의 아키텍처입니다. 데이터는 S3에 랜딩되며 Iceberg 개방형 레이크하우스에 저장됩니다. 선택적으로 아래와 같이 테이블을 데이터 웨어하우스에 미러링할 수 있습니다.

스키마
아티팩트는 내부 스키마 및 데이터 작업 스키마에 생성됩니다.
-
내부 스키마에는 여러 파티션이 있는 물리적 테이블이 포함되어 있습니다.
-
데이터 작업 스키마에는 데이터를 소비하는 데 사용할 수 있는 뷰가 포함되어 있습니다.
스키마가 둘 이상의 데이터 작업과 연결된 경우 각 데이터 작업은 테이블 및 뷰에 대해 고유한 접두사를 사용해야 합니다. 데이터 작업 설정에서 접두사를 설정할 수 있습니다.
내부 스키마만 이름 지정 충돌 여부를 확인합니다. 다른 스키마의 경우 테이블 이름에 이름 지정 충돌이 없는지 확인해야 합니다. 모범 사례는 내부 스키마의 이름을 데이터 작업 스키마와 동일한 이름으로 지정하고 _internal을 추가하는 것입니다. 이렇게 하면 모든 스키마 및 접두사 조합이 고유해집니다.
테이블
각 소스 테이블에 대해 내부 스키마에 _internal 접미사가 있는 테이블이 다음 형식으로 생성됩니다.
<INTERNAL_SCHEMA>.<TABLE_NAME>_internal
이 테이블에는 5개의 파티션이 포함되어 있으며, 각 파티션은 데이터가 처리되고 저장되는 방식에서 고유한 목적을 수행합니다. 각 파티션은 데이터 수명 주기에서의 역할에 따라 테이블 열의 하위 집합을 활용합니다.
내부 데이터 세트는 소스 시스템에서 들어오는 데이터를 효율적으로 관리하도록 구성되어 실시간 수집 및 과거 추적을 지원합니다. 데이터 흐름은 아래에 설명된 여러 특수 파티션을 통해 관리됩니다.
-
Changes 파티션 – 실시간 수집
소스 시스템의 모든 변경 사항(삽입, 업데이트 및 삭제)은 먼저 Changes 파티션에 추가됩니다.
-
원시 변경 로그 역할을 하는 이 파티션은 변환이 발생하기 전에 소스 활동의 전체 피드를 제공합니다.
-
각 변경 사항에는 처리 방법을 나타내는 유형(I, U 또는 D)이 태그로 지정됩니다.
-
이벤트는 발생할 때 소스에서 캡처됩니다. 파티션은 거의 실시간으로 업데이트됩니다.
-
Lake 랜딩 데이터 작업에 다음 설정이 적용된 경우 Changes 파티션을 사용할 수 있습니다.
-
일반 탭에서 업데이트 방법이 CDC로 설정되어 있습니다.
-
전체 로드가 활성화되어 있습니다.
-
-
-
Asset_state 파티션 - 진행률 추적
변경 사항이 수집됨에 따라 Asset_state 파티션은 두 가지 주요 日付と時刻을 기록합니다.
-
변경 사항이 마지막으로 Changes 파티션에 추가된 시점.
-
변경 사항이 마지막으로 Current 파티션에 적용된 시점.
이는 동기화 파이프라인에 대한 완전한 가시성을 제공하고 지연을 모니터링하거나 문제를 해결하는 데 도움이 됩니다.
-
-
Current 파티션(ODS) – 소스의 최신 복제본
Changes 파티션의 변경 사항은 주기적으로 Current 파티션에 적용되어 최신 상태의 쿼리 최적화된 소스 데이터 복사본을 유지합니다.
-
백그라운드 작업이 자동으로 실행되어 해당 업데이트를 적용합니다. 이는 고정된 일정이 아니라 누적된 변경 사항의 양을 기반으로 합니다.
-
초기 전체 로드는 Current 파티션에 직접 기록됩니다.
-
이 파티션은 데이터의 현재 상태를 반영하며 효율적인 쿼리를 위해 설계되었습니다.
-
-
Prior 파티션(HDS) – 과거 데이터
Current 파티션에서 레코드가 업데이트되거나 삭제되면 이전 버전의 복사본이 Prior 파티션에 기록됩니다.
-
레코드에는 변경 기록 및 데이터가 유효한 날짜 범위를 포함한 메타데이터가 포함됩니다.
-
이는 유형 2 천천히 변경되는 차원(SCD2)을 지원합니다.
-
스토리지 데이터 작업 설정의 일반 탭에서 과거 레코드 및 변경 레코드 아카이브 유지가 활성화된 경우 Prior 파티션을 사용할 수 있습니다.
-
업데이트된 버전의 레코드가 Current 파티션에 들어가면 이전 레코드는 과거 추적을 위해 Prior 파티션으로 이동됩니다.
-
-
Reload 파티션
Reload 파티션은 수동 또는 예약된 전체 다시 로드 중에 임시 스테이징 영역 역할을 합니다.
-
새 데이터는 먼저 Reload 파티션에 기록됩니다.
-
정기 유지 관리 작업은 일시 중지되기 전에 보류 중인 변경 사항을 선택 해제합니다.
-
데이터를 Current 파티션과 비교하여 차이점만 Current 파티션으로 이동합니다.
-
작업이 완료되면 Reload 파티션이 선택 해제됩니다.
이 프로세스는 전체 다시 로드 작업 중에 기본 데이터 세트에 대한 중단을 최소화합니다.
-
Current 파티션
| 필드 | 유형 | 설명 |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | 모든 레코드 기본 키의 해시입니다. 해시 형식은 SHA1입니다. 열은 백스페이스 문자로 구분됩니다. |
| hdr__from_timestamp | TIMESTAMP |
UTC 기준 日付と時刻:
|
| hdr__operation | VARCHAR (1) |
이 레코드의 최신 작업입니다.
|
| hdr__inserted_timestamp | TIMESTAMP | 키가 처음 추가된 시간의 UTC 日付と時刻입니다. 전체 로드를 사용하는 경우 전체 로드의 시작 시간입니다. |
| hdr__modified_timestamp | TIMESTAMP | 마지막 업데이트가 수행된 시간의 UTC 日付と時刻입니다. |
Prior 파티션
| 필드 | 유형 | 설명 |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | 모든 레코드 기본 키의 해시입니다. |
| hdr__from_timestamp | TIMESTAMP | UTC 기준 日付と時刻입니다. |
| hdr__to_timestamp | TIMESTAMP | UTC 기준 日付と時刻입니다. |
| hdr__operation | STRING (1) |
이 레코드의 최신 작업입니다.
|
| hdr__was_current_from_timestamp | TIMESTAMP | 레코드가 처음으로 최신 상태였던 시간의 UTC 日付と時刻입니다. |
| hdr__was_current_to_timestamp | TIMESTAMP | 레코드가 마지막으로 최신 상태였던 시간의 UTC 日付と時刻입니다. |
Changes 파티션
| 필드 | 유형 | 설명 |
|---|---|---|
| hdr__change_identifier | VARCHAR (50) |
변경 식별자는 두 부분으로 구성된 문자열입니다.
|
| hdr__operation | VARCHAR (1) |
이 레코드의 최신 작업입니다.
|
| hdr__timestamp | TIMESTAMP | UTC 기준 日付と時刻입니다. |
| hdr__key_hash | BINARY (20) | 모든 레코드 기본 키의 해시입니다. |
| hdr__inserted_timestamp | TIMESTAMP | 변경 사항이 Qlik에 의해 처리된 시간의 UTC 日付と時刻입니다. |
Asset_state 파티션
| 필드 | 유형 | 설명 |
|---|---|---|
| hdr__apply_change_identifier | VARCHAR (50) | Current 파티션에 적용된 최신 변경 사항의 변경 식별자입니다. |
| hdr__copy_change_identifier | VARCHAR (50) | Changes 파티션에 추가된 최신 변경 사항의 변경 식별자입니다. |
Reload 파티션
Reload 파티션에서 사용하는 열은 Current 파티션과 동일합니다.
뷰
생성된 모든 뷰는 거의 실시간으로 업데이트됩니다. 쿼리 및 보고를 단순화하기 위해 다음 뷰를 사용할 수 있습니다.
Current
Current 뷰는 데이터의 가장 최근 상태를 반영합니다. 이 뷰는 거의 실시간으로 업데이트되는 소스 테이블의 복제본을 나타냅니다. Current 및 Changes 파티션의 데이터를 병합합니다.
이름: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>
테이블 구조에 헤더 열이 추가되지 않습니다.
History
데이터 작업 설정에서 History가 활성화된 경우 선택한 각 소스 테이블에 대해 데이터 자산 스키마에 History 뷰가 생성됩니다. History 뷰는 Prior 및 Changes 파티션의 데이터를 병합합니다. 감사 또는 과거 분석에 이상적인 전체 변경 타임라인을 제공합니다.
이름: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>
다음 헤더 필드가 History 뷰에 추가됩니다.
| 필드 | 유형 | 설명 |
|---|---|---|
| hdr__key_hash | BINARY (20) | 모든 레코드 기본 키의 해시입니다. |
| hdr__from_timestamp | TIMESTAMP | 소스 시스템에서 변경이 발생한 시간의 日付と時刻입니다. 이는 사용자가 원래 변경을 수행한 시점을 반영합니다. |
| hdr__to_timestamp | TIMESTAMP | 소스 시스템에서 변경이 취소되거나 업데이트된 시간의 日付と時刻입니다. |
| hdr__store | VARCHAR (10) |
이는 레코드가 있는 위치를 나타냅니다.
|
| hdr__operation | STRING (1) |
이 레코드의 최신 작업입니다.
|
| hdr__deleted | BIT | hdr__operation이 D 또는 d인지에 따라 레코드가 소프트 삭제되었는지 여부를 나타냅니다. |
| hdr__was_current_from_timestamp | TIMESTAMP | 이 행이 Current 파티션에 들어간 시간(UTC)입니다. 이는 일반적으로 스토리지 작업이 실행되고 변경 사항이 적용된 시점입니다. |
| hdr__was_current_to_timestamp | TIMESTAMP | 예를 들어 최신 버전으로 인해 행이 Current 테이블에서 제거된 시간(UTC)입니다. |