주요 컨텐츠로 이동

이제 Lakehouse에서 대리 키 생성을 위한 ID 열을 사용할 수 있습니다!

Identity Columns to Generate Surrogate Keys Are Now Available in a Lakehouse Near You!

발행일: 2022년 8월 8일

제품Less than a minute

작성자: Franco Patano

ID 열이란 무엇인가요?

ID 열은 데이터베이스에서 새 데이터 행마다 고유한 ID 번호를 자동으로 생성하는 열입니다. 이 번호는 행의 내용과 관련이 없습니다.

ID 열은 대리 키(surrogate keys)의 한 형태입니다. 데이터 웨어하우스에서는 각 행을 고유하게 식별하고 시간이 지남에 따라 데이터 변경 사항을 추적하기 위해 대리 키라는 추가 키를 사용하는 것이 일반적입니다. 또한, 자연 키(natural keys)보다 대리 키를 사용하는 것이 좋습니다. 대리 키는 시스템에서 생성되며 행의 고유성을 식별하기 위해 여러 필드에 의존하지 않습니다.

따라서 ID 열은 대리 키를 만드는 데 사용되며, 이는 데이터 웨어하우스 및 데이터 마트의 차원 모델에서 기본 키 및 외래 키 역할을 할 수 있습니다. 아래에서 볼 수 있듯이 이러한 키는 스타 스키마와 같은 전통적인 차원 모델에서 서로 다른 테이블을 연결하는 열입니다.

스타 스키마 예시
스타 스키마 예시

데이터 레이크에서 대리 키를 생성하는 전통적인 접근 방식

대부분의 빅데이터 기술은 성능 향상을 위해 병렬 처리, 즉 작업을 동시에 완료할 수 있는 더 작은 부분으로 나누는 능력을 사용합니다. 데이터 레이크 초기에는 여러 머신에서 고유한 시퀀스를 생성하는 쉬운 방법이 없었습니다. 이로 인해 일부 데이터 엔지니어는 적절한 기능 없이 대리 키를 생성하기 위해 다음과 같이 덜 안정적인 방법을 사용했습니다.

  • monotonically_increasing_id(),
  • row_number(),
  • Rank OVER,
  • ZipWithIndex(),
  • ZipWithUniqueIndex(),
  • hash()를 사용한 행 해시, 그리고
  • md5()를 사용한 행 해시.

이러한 함수는 특정 상황에서는 작업을 완료할 수 있지만, 시퀀스 희소 채우기, 대규모 성능 문제, 동시 트랜잭션 문제와 관련된 많은 경고 및 주의 사항이 자주 발생합니다.

데이터베이스는 중앙 집중식 트랜잭션 관리자의 도움을 받아 대리 키를 생성하여 데이터 행을 고유하게 식별하기 위해 초기부터 시퀀스를 생성할 수 있었습니다. 그러나 일반적인 구현은 잠금 및 트랜잭션 커밋이 필요하며, 이는 관리하기 어려울 수 있습니다.

가이드

최신 분석을 위한 컴팩트 가이드

Delta Lake의 ID 열을 사용하면 대리 키 생성이 더 쉬워집니다

ID 열은 위에서 언급한 문제를 해결하고 대리 키 생성을 위한 간단하고 성능이 뛰어난 솔루션을 제공합니다. Delta Lake는 대리 키 생성을 위해 ID 열을 지원하는 최초의 데이터 레이크 프로토콜입니다.

Delta Lake는 이제 새 행이 로드될 때 고유한 자동 증가 ID 번호를 자동으로 생성할 수 있는 IDENTITY 열을 지원합니다. 이러한 ID 번호는 연속적이지 않을 수 있지만, Delta는 간격을 가능한 한 작게 유지하기 위해 최선을 다합니다. 이 기능을 사용하여 데이터 웨어하우징 워크로드에 대한 대리 키를 쉽게 만들 수 있습니다.

SQL 및 Delta Lake를 사용하여 ID 열로 대리 키를 만드는 방법

[권장] 항상 ID로 생성

SQL에서 ID 열을 만드는 것은 Delta Lake 테이블을 만드는 것만큼 간단합니다. 열을 선언할 때 BIGINT 데이터 유형으로 id 또는 원하는 다른 열 이름을 추가한 다음 GENERATED ALWAYS AS IDENTITY를 입력합니다.

이제 이 테이블에서 데이터를 삽입하는 작업을 수행할 때마다 이 열을 삽입에서 생략하면 Delta Lake가 Delta Lake 테이블에 삽입된 각 행에 대해 IDENTITY 열에 대한 고유한 값을 자동으로 생성합니다.

다음은 Delta Lake에서 ID 열을 사용하는 간단한 예입니다.

앞으로 "id"라는 ID 열은 새 레코드를 테이블에 삽입할 때마다 자동 증가합니다. 그런 다음 다음과 같이 새 데이터를 삽입할 수 있습니다.

대리 키 열인 "id"가 INSERT 문 부분에서 누락된 것을 확인하세요. Delta Lake는 클라우드 객체 스토리지(예: AWS S3, Azure Data Lake Storage 또는 Google Cloud Storage)에 테이블을 쓸 때 대리 키를 채웁니다. 설명서에서 자세히 알아보세요.

기본값으로 생성

GENERATED BY DEFAULT AS IDENTITY 옵션도 있습니다. 이 옵션을 사용하면 ID 삽입을 재정의할 수 있지만 ALWAYS 옵션은 재정의할 수 없습니다.

이 새로운 기능을 채택할 때 명심해야 할 몇 가지 주의 사항이 있습니다. ID 열은 기존 테이블에 추가할 수 없습니다. 테이블에 새 ID 열을 추가하여 테이블을 다시 만들어야 합니다. 이렇게 하려면 ID 열이 있는 새 테이블 DDL을 만들고 기존 열을 새 테이블에 삽입하면 새 테이블에 대한 대리 키가 생성됩니다.

지금 Databricks SQL의 Delta Lake와 함께 ID 열 사용 시작하기

ID 열은 이제 Databricks Runtime 10.4 이상 및 Databricks SQL 2022.17 이상에서 GA(일반 공급)입니다. ID 열을 사용하면 이제 모든 데이터 웨어하우징 워크로드에서 Photon으로 가속화된 Lakehouse 아키텍처의 모든 이점을 활용할 수 있습니다. 지금 Databricks SQL에서 ID 열을 사용해 보세요.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요