스토리지 유형 사양을 위한 SQL 구문

이 섹션에서는 테이블 및 데이터베이스 수준 모두에서 데이터 소스의 저장소 유형을 지정하고 관리하기 위한 NPS SQL 구문의 향상된 기능에 대해 설명합니다. 이러한 개선 사항을 통해 기존 레이크하우스 기능과 유사하게 스토리지 옵션을 더욱 유연하게 구성할 수 있습니다.

테이블을 생성한 후에는 기존 테이블의 저장소 유형을 변경할 수 없습니다. 대안으로 CTAS(Create Table As Select)를 사용하여 원하는 스토리지 유형을 지정하고 새 테이블을 생성한 후 원본 테이블을 삭제하는 방법이 있습니다.

데이터베이스 수준 구성

  • 사용자는 데이터베이스 수준에서 기본 저장소 유형을 구성하고 수정할 수 있습니다.
  • 이렇게 하면 개별 테이블 수준에서 재정의하지 않는 한 데이터베이스 내의 모든 테이블에서 일관된 저장소 동작이 가능합니다.

기본 스토리지 유형

기본 저장소 유형은 시스템 수준에서 '차단'으로 설정되어 있습니다. 콘솔에서 수정할 수 있습니다.

테이블 생성을 위한 저장소 유형 우선 순위

테이블을 만들 때 시스템은 다음 우선 순위에 따라 스토리지 유형을 결정합니다:

  1. Create Table문
  2. 세션 수준 설정
  3. 데이터베이스 수준 설정
  4. 시스템 전체 설정

첫 번째이자 가장 높은 우선순위는 CREATE TABLE 문 자체입니다. 문에 storagetype 이 명시적으로 지정되지 않은 경우 시스템에서 세션 수준 설정이 적용되었는지 확인합니다. 그렇지 않은 경우 데이터베이스 수준에서 설정된 기본 저장소 유형을 찾습니다. 데이터베이스 수준 설정이 "default" 인 경우 시스템 전체에 DEFAULT_STORAGE_TYPE 이 사용됩니다.

보기 테이블 저장 유형

테이블의 저장소 유형을 확인하려면 _v_table 시스템 보기를 쿼리하세요:

SELECT TABLENAME, STORAGESOURCE, CASE WHEN STORAGESOURCE = 1 THEN 'BLOCK' WHEN STORAGESOURCE = 2 THEN 'OBJECT' END AS STORAGETYPE FROM _v_table WHERE TABLENAME like 'TEST_%';

테이블의 저장소 유형은 시스템 보기 _v_table에서 확인할 수 있습니다. 여기서 1은 block 을 나타내고 2는 object 을 나타냅니다.

| TABLENAME | STORAGESOURCE | STORAGETYPE |
|-----------|---------------|-------------|
| TEST_OBJ  | 2             | OBJECT      |
| TEST_BLK  | 1             | BLOCK       |

테이블이 생성되면 해당 테이블( storagetype ) 은 변경할 수 없습니다. 테이블을 다른 저장소 유형으로 복사하려면 다음과 같이 CTAS(Create Table As Select) 문을 사용합니다:

CREATE TABLE t3 AS (SELECT * FROM t1) STORAGETYPE 'block';

SELECT 문 주위에 괄호는 필수입니다

구체화된 보기에는 storagetype 을 지정할 수 없습니다. 저장소 유형은 기본 테이블에서 상속됩니다.

블록 스토리지만 지원하는 릴리스에서 개체 스토리지를 지원하는 릴리스로 업그레이드하는 동안 모든 기존 테이블의 storagetype'block' 으로 설정됩니다.

데이터베이스에 storagetype 설정

특정 데이터베이스에서 생성된 테이블에 적용할 기본 저장소 유형은 데이터베이스를 만들 때 지정할 수 있습니다.

  1. CREATE DATABASE
  2. 세션 수준 설정
  3. 시스템 전체 설정

데이터베이스를 생성하는 동안 기본값 storagetype 을 설정할 수 있습니다:

CREATE DATABASE database1 STORAGETYPE 'block';

만약에 storagetype 지정되지 않으면 시스템은 다음을 수행합니다.

  • 세션 수준 설정을 확인합니다.
  • 찾을 수 없는 경우 시스템 전체 기본값을 사용합니다.
  • 이 값은 데이터베이스의 기본값인 storagetype 으로 내부에 저장됩니다.

데이터베이스 수준에서 기본값을 설정하지 않은 상태로 두려면 다음을 사용합니다:

CREATE DATABASE database1 STORAGETYPE 'default';

기본값인 storagetype 데이터베이스를 확인하려면 _v_database 시스템 보기를 쿼리하세요:

SELECT DATABASE, STORAGETYPE FROM _v_database;

출력 예:

 DATABASE |  STORAGETYPE
----------+----------------
 DB1      | BLOCK
 DB2      | OBJECT
 SYSTEM   | SYSTEM DEFAULT
(3 rows)

블록 스토리지만 지원하는 릴리스에서 오브젝트 스토리지를 지원하는 릴리즈로 업그레이드하는 동안 모든 기존 데이터베이스의 기본값 storagetype'block' 으로 설정됩니다.

데이터베이스와 연결된 기본값 storagetypeALTER DATABASE 명령을 사용하여 변경할 수 있습니다.

  • 데이터베이스 저장소 유형 변경

    ALTER DATABASE <database_name> STORAGETYPE '<storage_type>';