하이브리드 테이블 만들기

이 항목에서는 Snowflake에서 하이브리드 테이블 을 만드는 방법에 대한 개요를 제공합니다.

하이브리드 테이블 만들기

다음 방법 중 하나로 SQL 명령을 사용하여 하이브리드 테이블을 만들 수 있습니다.

-- Create hybrid table
CREATE OR REPLACE HYBRID TABLE icecream (
  id NUMBER PRIMARY KEY AUTOINCREMENT START 1 INCREMENT 1,
  col1 VARCHAR NOT NULL,
  col2 VARCHAR NOT NULL
);

-- Insert data into hybrid table
INSERT INTO icecream VALUES(1, 'A1', 'B1');
INSERT INTO icecream VALUES(2, 'A2', 'B2');
INSERT INTO icecream VALUES(3, 'A3', 'B3');
INSERT INTO icecream VALUES(4, 'A4', 'B4');

-- Update data in hybrid table
UPDATE icecream SET col2 = 'B3-updated' WHERE id = 3;

-- Delete data from hybrid table
DELETE FROM icecream WHERE id = 4;

-- Select data from hybrid table
SELECT * FROM icecream;
Copy
  • 베리언트 구문 CREATE HYBRID TABLE ... AS SELECTCREATE HYBRID TABLE ... LIKE 를 사용합니다. CREATE HYBRID TABLE 섹션을 참조하십시오. 예:

CREATE OR REPLACE HYBRID TABLE table1 (
  employee_id INT PRIMARY KEY,
  department_id VARCHAR(200)
) as
SELECT * FROM table2;
Copy

데이터 로딩하기

참고

하이브리드 테이블을 생성하려면 세션의 현재 웨어하우스로 지정된 실행 중인 웨어하우스가 있어야 합니다. 하이브리드 테이블을 생성할 때 실행 중인 웨어하우스를 지정하지 않으면 오류가 발생할 수 있습니다. 자세한 내용은 웨어하우스 관련 작업하기 를 참조하십시오.

데이터 스테이지 또는 다른 테이블에서 복사하여(즉, CREATE TABLE … AS SELECT, COPY 또는 INSERT INTO … SELECT 사용) 하이브리드 테이블에 데이터를 대량 로드할 수 있지만 반드시 CREATE TABLE … AS SELECT 문을 사용하여 하이브리드 테이블에 대량으로 데이터를 로드하는 것이 좋습니다. 대량 로드는 성능에 최적화되어 있으며 대부분의 경우 수백만 개의 레코드를 로드할 때 CREATE TABLE … AS SELECT 작업을 사용하면 다른 옵션보다 약 10배 더 빠릅니다.

INSERT 또는 COPY를 통한 대량 로드도 지원되지만 대량 데이터의 경우 데이터 로드 속도가 느려집니다. 대규모 데이터 세트를 로드할 때 대기 시간이 길거나 시간 초과가 발생할 수도 있습니다. 최근에 로드된 데이터에 대한 쿼리도 느려집니다. COPY 등의 DML 문에 대한 대량 로드 최적화가 가까운 미래에 계획되어 있습니다.

주의

CREATE TABLE … AS SELECT는 외래 키 제약 조건을 지원하지 않습니다. 하이브리드 테이블에서 외래 키 제약 조건을 사용해야 하는 경우 COPY 또는 INSERT INTO … SELECT 등 다른 옵션을 사용해야 합니다.

원본 데이터가 Snowflake 테이블이 아닌 외부 스테이지에 있는 경우 COPY FROM @stage/data.csv 대신 CREATE TABLE ... AS SELECT * FROM @stage/data.csv 를 사용하면 보다 효율적인 로드 방법의 이점을 누릴 수 있습니다.

CREATE TABLE … AS SELECT를 사용하지 않는 경우 분당 최대 약 1백만 개의 레코드를 로드할 수 있습니다. 그러나 이 근사값은 테이블 구조(예: 커질수록 로드 속도가 느려지는 레코드 크기)에 따라 달라집니다. 로딩 작업이 너무 오래 걸려 실패하는 경우 더 작은 데이터 세트로 테스트하거나 로드를 더 작은 청크로 나눕니다.

참고

Snowflake 테이블에 데이터를 로드하는 다른 방법(예: Snowpipe)은 현재 지원되지 않습니다.

하이브리드 테이블에 인덱스 추가하기

하이브리드 테이블을 생성할 때 모든 키, 인덱스, 제약 조건을 정의할 수 있습니다. 예:

CREATE OR REPLACE HYBRID TABLE targethybridtable (
  col1 VARCHAR(32) PRIMARY KEY,
  col2 NUMBER(38,0) UNIQUE,
  col3  NUMBER(38,0),
    INDEX index_col3 (col3))
AS
  (SELECT
     col1,
     col2,
     col3
   FROM sourcetable);
Copy

기존 하이브리드 테이블에 인덱스를 추가하는 경우 하이브리드 테이블을 다시 생성하는 것이 좋습니다.

선택적으로, CREATE INDEX 를 사용하여 기존 하이브리드 테이블에 대한 인덱스를 생성할 수 있습니다. 워크로드에 사용되는 기존 하이브리드 테이블에 인덱스를 추가하는 경우 CREATE INDEX를 사용하십시오. CREATE INDEX를 사용히면 작업 중에 테이블이 잠기지 않고 인덱스가 동시에 작성됩니다.

하이브리드 테이블에는 고유한 기본 키가 필요합니다. 하이브리드 테이블의 데이터는 이 기본 키를 기준으로 정렬됩니다. 기본 키가 아닌 속성에 추가 보조 인덱스를 추가하여 해당 속성의 조회를 가속화할 수 있습니다. 검사할 레코드 수를 줄이기 위해 =, >, >=, <, <=, IN 조건자에 인덱스를 활용할 수 있습니다.

주의

보조 인덱스를 추가하려면 하이브리드 테이블에 대한 SELECT 권한이 부여된 역할을 사용해야 합니다. 하이브리드 테이블의 데이터 뷰에 액세스할 수 있지만 테이블 자체에는 액세스할 수 없는 경우 보조 인덱스를 추가할 수 없습니다.

특정 속성 또는 복합 속성 그룹에 대한 조건자를 사용하는 공통적이고 반복되는 쿼리가 있는 경우 해당 속성 또는 속성 그룹에 인덱스를 추가하여 성능을 향상해 보십시오. 그러나 인덱스를 사용할 때는 다음 고려 사항에 유의하십시오.

  • 인덱스에 데이터 하위 세트의 추가 복사본을 저장하면 저장소 소비가 증가합니다.

  • 인덱스가 동기적으로 유지 관리되므로 DML에 오버헤드가 추가됩니다.