주요 컨텐츠로 이동

이제 근처 Lakehouse에서 서 surrogate 키를 생성하는 데 사용할 수 있는 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 열은 대체 키의 한 형태입니다. 데이터 웨어하우스에서는 각 행을 고유하게 식별하고 시간 경과에 따른 데이터 변경 사항을 추적하기 위해 대체 키라는 추가 키를 사용하는 것이 일반적입니다. 또한 자연 키보다 대체 키를 사용하는 것이 좋습니다. 대체 키는 시스템에서 생성되며 행의 고유성을 식별하기 위해 여러 필드에 의존하지 않습니다.

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

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

데이터 레이크에서 대체 키를 생성하는 기존 방식

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

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

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

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

5X 리더

Gartner®: Databricks 클라우드 데이터베이스 리더

Delta Lake의 ID 열을 사용하면 대체 키를 더 쉽게 생성할 수 있습니다.

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

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

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

[권장] 항상 ID로 생성

SQL에서 ID 열을 만드는 것은 Delta Lake 테이블을 만드는 것만큼 간단합니다. 열을 선언할 때 데이터 형식이 BIGINTid라는 열 이름(또는 원하는 이름)을 추가한 다음 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)에 쓸 때 대체 키를 채웁니다. 자세한 내용은 설명서를 참조하세요.

DEFAULT로 생성

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의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

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