작성자: Franco Patano
ID 열은 데이터베이스에서 새 데이터 행마다 고유한 ID 번호를 자동으로 생성하는 열입니다. 이 번호는 행의 내용과 관련이 없습니다.
ID 열은 대리 키(surrogate keys)의 한 형태입니다. 데이터 웨어하우스에서는 각 행을 고유하게 식별하고 시간이 지남에 따라 데이터 변경 사항을 추적하기 위해 대리 키라는 추가 키를 사용하는 것이 일반적입니다. 또한, 자연 키(natural keys)보다 대리 키를 사용하는 것이 좋습니다. 대리 키는 시 스템에서 생성되며 행의 고유성을 식별하기 위해 여러 필드에 의존하지 않습니다.
따라서 ID 열은 대리 키를 만드는 데 사용되며, 이는 데이터 웨어하우스 및 데이터 마트의 차원 모델에서 기본 키 및 외래 키 역할을 할 수 있습니다. 아래에서 볼 수 있듯이 이러한 키는 스타 스키마와 같은 전통적인 차원 모델에서 서로 다른 테이블을 연결하는 열입니다.

대부분의 빅데이터 기술은 성능 향상을 위해 병렬 처리, 즉 작업을 동시에 완료할 수 있는 더 작은 부분으로 나누는 능력을 사용합니다. 데이터 레이크 초기에는 여러 머신에서 고유한 시퀀스를 생성하는 쉬운 방법이 없었습니다. 이로 인해 일부 데이터 엔지니어는 적절한 기능 없이 대리 키를 생성하기 위해 다음과 같이 덜 안정적인 방법을 사용했습니다.
monotonically_increasing_id(),row_number(),Rank OVER,ZipWithIndex(),ZipWithUniqueIndex(),hash()를 사용한 행 해시, 그리고md5()를 사용한 행 해시.이러한 함수는 특정 상황에서는 작업을 완료할 수 있지만, 시퀀스 희소 채우기, 대규모 성능 문제, 동시 트랜잭션 문제와 관련된 많은 경고 및 주의 사항이 자주 발생합니다.
데이터베이스는 중앙 집중식 트랜잭션 관리자의 도움을 받아 대리 키를 생성하여 데이터 행을 고유하게 식별하기 위해 초기부터 시퀀스를 생성할 수 있었습니다. 그러나 일반적인 구현은 잠금 및 트랜잭션 커밋이 필요하며, 이는 관리하기 어려울 수 있습니다.
ID 열은 위에서 언급한 문제를 해결하고 대리 키 생성을 위한 간단하고 성능이 뛰어난 솔루션을 제공합니다. Delta Lake는 대리 키 생성을 위해 ID 열을 지원하는 최초의 데이터 레이크 프로토콜입니다.
Delta Lake는 이제 새 행이 로드될 때 고유한 자동 증가 ID 번호를 자동으로 생성할 수 있는 IDENTITY 열을 지원합니다. 이러한 ID 번호는 연속적이지 않을 수 있지만, Delta는 간격을 가능한 한 작게 유지하기 위해 최선을 다합니다. 이 기능을 사용하여 데이터 웨어하우징 워크로드에 대한 대리 키를 쉽게 만들 수 있습니다.
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을 만들고 기존 열을 새 테이블에 삽입하면 새 테이블에 대한 대리 키가 생성됩니다.
ID 열은 이제 Databricks Runtime 10.4 이상 및 Databricks SQL 2022.17 이상에서 GA(일반 공급)입니다. ID 열을 사용하면 이제 모든 데이터 웨어하우징 워크로드에서 Photon으로 가속화된 Lakehouse 아키텍처의 모든 이점을 활용할 수 있습니다. 지금 Databricks SQL에서 ID 열을 사용해 보세요.
(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)
블로그를 구독하고 최신 게시물을 이메일로 받아보세요.