스토리지 유형 사양을 위한 SQL 구문
이 섹션에서는 테이블 및 데이터베이스 수준 모두에서 데이터 소스의 저장소 유형을 지정하고 관리하기 위한 NPS SQL 구문의 향상된 기능에 대해 설명합니다. 이러한 개선 사항을 통해 기존 레이크하우스 기능과 유사하게 스토리지 옵션을 더욱 유연하게 구성할 수 있습니다.
테이블을 생성한 후에는 기존 테이블의 저장소 유형을 변경할 수 없습니다. 대안으로 CTAS(Create Table As Select)를 사용하여 원하는 스토리지 유형을 지정하고 새 테이블을 생성한 후 원본 테이블을 삭제하는 방법이 있습니다.
데이터베이스 수준 구성
- 사용자는 데이터베이스 수준에서 기본 저장소 유형을 구성하고 수정할 수 있습니다.
- 이렇게 하면 개별 테이블 수준에서 재정의하지 않는 한 데이터베이스 내의 모든 테이블에서 일관된 저장소 동작이 가능합니다.
기본 스토리지 유형
기본 저장소 유형은 시스템 수준에서 '차단'으로 설정되어 있습니다. 콘솔에서 수정할 수 있습니다.
테이블 생성을 위한 저장소 유형 우선 순위
테이블을 만들 때 시스템은 다음 우선 순위에 따라 스토리지 유형을 결정합니다:
- Create Table문
- 세션 수준 설정
- 데이터베이스 수준 설정
- 시스템 전체 설정
첫 번째이자 가장 높은 우선순위는 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 설정
특정 데이터베이스에서 생성된 테이블에 적용할 기본 저장소 유형은 데이터베이스를 만들 때 지정할 수 있습니다.
CREATE DATABASE문- 세션 수준 설정
- 시스템 전체 설정
데이터베이스를 생성하는 동안 기본값 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' 으로 설정됩니다.
데이터베이스와 연결된 기본값 storagetype 은 ALTER DATABASE 명령을 사용하여 변경할 수 있습니다.
-
데이터베이스 저장소 유형 변경
ALTER DATABASE <database_name> STORAGETYPE '<storage_type>';