Qlik 오픈 레이크하우스의 데이터 집합 아키텍처
Qlik 오픈 레이크하우스에서 데이터 집합을 생성하면 저장소 테이블, 변경 테이블 및 뷰가 Qlik Talend Data Integration에 의해 자동으로 생성됩니다. 이러한 뷰를 쿼리하여 Iceberg 오픈 테이블 형식으로 저장된 현재 및 기록 데이터에 액세스할 수 있습니다.
직관적이고 안내된 사용자 인터페이스를 통해 데이터 파이프라인을 구축, 모델링 및 실행할 수 있습니다. 수동 코딩 없이 작업 데이터 저장소(ODS) 및 기록 데이터 저장소(HDS)에 대한 스키마를 자동으로 생성할 수 있습니다.
Qlik 데이터 게이트웨이 - 데이터 이동를 사용하는 Qlik 오픈 레이크하우스 데이터 파이프라인에 대한 아키텍처. 데이터는 S3에 저장되고 Iceberg 오픈 레이크하우스에 랜딩됩니다. 필요에 따라 아래에 표시된 대로 테이블을 데이터 웨어하우스로 미러링할 수 있습니다.

스키마
아티팩트는 내부 스키마 및 데이터 작업 스키마에서 생성됩니다.
-
내부 스키마에는 여러 개의 파티션이 있는 물리적 테이블이 포함되어 있습니다.
-
데이터 작업 스키마에는 데이터를 소비하는 데 사용할 수 있는 보기가 포함되어 있습니다.
스키마가 둘 이상의 데이터 작업과 연결된 경우 각 데이터 작업은 테이블 및 뷰에 대해 고유한 접두사를 사용해야 합니다. 데이터 작업 설정에서 접두사를 설정할 수 있습니다.
이름 충돌에 대해 내부 스키마만 확인합니다. 다른 스키마의 경우 테이블 이름에 명명 충돌이 없는지 확인해야 합니다. 가장 좋은 방법은 내부 스키마 이름을 _internal이 추가된 데이터 작업 스키마와 동일한 이름으로 지정하는 것입니다. 이렇게 하면 모든 스키마와 접두사 조합이 고유해집니다.
테이블
각 소스 테이블에 대해 다음 형식을 사용하여 접미사 _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) |
이 레코드의 최신 작업.
|
| 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) |
이 레코드의 최신 작업
|
| 헤더가 현재였던 시작 날짜 및 시간 | TIMESTAMP | 최초 레코드가 현재인 타임스탬프(UTC). |
| 헤더가 현재였던 종료 날짜 및 시간 | TIMESTAMP | 마지막으로 레코드가 현재인 타임스탬프(UTC). |
파티션 변경
| 필드 | 유형 | 설명 |
|---|---|---|
| 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) | 현재 파티션에 적용된 최신 변경 내용의 변경 식별자. |
| 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) |
이는 레코드가 있는 위치를 나타냅니다.
|
| hdr__operation | STRING(1) |
이 레코드의 최신 작업
|
| hdr__deleted | 비트 | hdr__operation이 D인지 d인지에 따라 레코드가 일시 삭제되었는지 여부를 나타냅니다. |
| hdr__was _current_from_timestamp | TIMESTAMP | 이 행이 현재 파티션에 들어온 시간(UTC)입니다. 이는 일반적으로 저장 작업이 실행되고 변경 내용이 적용된 경우입니다. |
| hdr__was _current_to_timestamp | TIMESTAMP | 예를 들어, 최신 버전으로 인해 행이 현재 테이블에서 제거된 시간(UTC)입니다. |