본문으로 건너뛰기
최종 수정: 에

Storage Vault 관리: 생성, 구성 및 접근 제어

Storage Vault는 Doris가 컴퓨팅-스토리지 분리 모드에서 사용하는 원격 공유 스토리지 추상화입니다. 하나 이상의 Storage Vault를 구성하고 테이블마다 서로 다른 Storage Vault에 데이터를 저장하여 스토리지를 유연하게 관리할 수 있습니다.

Storage Vault 생성​

구문

CREATE STORAGE VAULT [IF NOT EXISTS] <vault_name>
PROPERTIES
("key" = "value", ...)

<vault_name>은 사용자가 정의하는 Storage Vault의 이름으로, 이후 작업에서 고유 식별자로 사용됩니다.

HDFS Storage Vault 생성​

HDFS 기반 Storage Vault를 생성하기 전에 모든 노드(FE, BE 노드 및 Meta Service 포함)가 대상 HDFS에 접근할 수 있는지 확인해야 합니다. 이를 위해 Kerberos 인증 설정과 연결 확인을 완료해야 합니다. 각 노드에서 Hadoop Client를 사용하여 테스트할 수 있습니다.

CREATE STORAGE VAULT IF NOT EXISTS hdfs_vault_demo
PROPERTIES (
"type" = "hdfs", -- required
"fs.defaultFS" = "hdfs://127.0.0.1:8020", -- required
"path_prefix" = "big/data", -- optional, typically filled with the business name
"hadoop.username" = "user", -- optional
"hadoop.security.authentication" = "kerberos", -- optional
"hadoop.kerberos.principal" = "hadoop/127.0.0.1@XXX", -- optional
"hadoop.kerberos.keytab" = "/etc/emr.keytab" -- optional
);

S3 Storage Vault 생성​

CREATE STORAGE VAULT IF NOT EXISTS s3_vault_demo
PROPERTIES (
"type" = "S3", -- required
"s3.endpoint" = "oss-cn-beijing.aliyuncs.com", -- required
"s3.region" = "cn-beijing", -- required
"s3.bucket" = "bucket", -- required
"s3.root.path" = "big/data/prefix", -- required
"s3.access_key" = "ak", -- required
"s3.secret_key" = "sk", -- required
"provider" = "OSS", -- required
"use_path_style" = "false" -- optional
);
필수 권한

객체 스토리지 경로에는 다음 접근 권한이 있어야 합니다: head, get, list, put, multipartUpload, delete.

다른 클라우드 제공업체의 예제와 매개변수 설명은 CREATE-STORAGE-VAULT를 참조하세요.

Storage Vault 조회​

구문

SHOW STORAGE VAULTS

결과에는 4개의 열이 포함됩니다:

열설명
Storage Vault 이름사용자가 정의한 Vault 식별자
Storage Vault ID시스템에서 할당한 고유 ID
속성Vault의 구성 속성
IsDefault기본 Storage Vault인지 여부

기본 Storage Vault 설정​

구문

SET <vault_name> AS DEFAULT STORAGE VAULT

설정 후 테이블을 생성할 때 Storage Vault를 명시적으로 지정하지 않으면 이 기본 Vault가 자동으로 사용됩니다.

테이블 생성 시 Storage Vault 지정​

storage_vault_name을 PROPERTIES 절에 지정하여 CREATE TABLE을 실행합니다. 그러면 테이블 데이터가 해당 Storage Vault에 저장됩니다.

참고

테이블이 성공적으로 생성되면 해당 테이블의 storage_vault는 수정할 수 없습니다. 생성 후 Storage Vault 변경은 지원되지 않습니다.

예제

CREATE TABLE IF NOT EXISTS supplier (
s_suppkey int(11) NOT NULL COMMENT "",
s_name varchar(26) NOT NULL COMMENT "",
s_address varchar(26) NOT NULL COMMENT "",
s_city varchar(11) NOT NULL COMMENT "",
s_nation varchar(16) NOT NULL COMMENT "",
s_region varchar(13) NOT NULL COMMENT "",
s_phone varchar(16) NOT NULL COMMENT ""
)
UNIQUE KEY (s_suppkey)
DISTRIBUTED BY HASH(s_suppkey) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"storage_vault_name" = "hdfs_demo_vault"
);

데이터베이스 생성 시 Storage Vault 지정​

storage_vault_name을 PROPERTIES 절에 지정하여 CREATE DATABASE를 실행합니다. 해당 데이터베이스에서 새 테이블을 생성할 때 Storage Vault를 개별적으로 지정하지 않으면 데이터베이스의 Storage Vault 설정을 상속합니다.

예제

CREATE DATABASE IF NOT EXISTS `db_test`
PROPERTIES (
"storage_vault_name" = "hdfs_demo_vault"
);

데이터베이스의 storage_vault_name은 ALTER-DATABASE를 통해 변경할 수 있습니다. 변경 사항은 새로 생성하는 테이블에만 적용되며 기존 테이블에는 영향을 주지 않습니다.

버전 참고 사항 및 우선순위 규칙
  • 데이터베이스 생성 시 Storage Vault를 지정하는 기능은 버전 3.0.5부터 지원됩니다.
  • 테이블 생성 시 Storage Vault 선택 우선순위는 높은 순서대로 테이블 > 데이터베이스 > 기본 Storage Vault입니다.
  • Storage Vault의 VAULT_NAME을 수정하면 데이터베이스 수준에서 설정한 Vault가 유효하지 않게 되어 오류가 발생할 수 있습니다. 이 경우 데이터베이스에 유효한 storage_vault_name을 다시 설정해야 합니다.

Storage Vault 수정​

ALTER STORAGE VAULT는 Storage Vault의 수정 가능한 속성을 업데이트합니다.

수정 가능한 속성​

S3 Storage Vault에서 수정할 수 있는 속성:

속성설명
VAULT_NAMEVault 이름(이름 변경)
s3.access_key액세스 키 ID
s3.secret_key액세스 키 시크릿
use_path_stylepath-style 접근 사용 여부

HDFS Storage Vault에서 수정할 수 없는 속성:

속성이유
path_prefix수정하면 기존 데이터 경로에 불일치가 발생함
fs.defaultFS수정하면 이미 기록된 데이터에 접근할 수 없게 됨

자세한 속성 설명은 CREATE-STORAGE-VAULT를 참조하세요.

예제​

S3 Storage Vault 수정:

ALTER STORAGE VAULT old_s3_vault
PROPERTIES (
"type" = "S3",
"VAULT_NAME" = "new_s3_vault",
"s3.access_key" = "new_ak",
"s3.secret_key" = "new_sk"
);

HDFS Storage Vault 수정:

ALTER STORAGE VAULT old_hdfs_vault
PROPERTIES (
"type" = "hdfs",
"VAULT_NAME" = "new_hdfs_vault",
"hadoop.username" = "hdfs"
);

Storage Vault 삭제​

현재 Storage Vault 삭제는 지원되지 않습니다.

Storage Vault 접근 제어​

관리자는 지정된 MySQL 사용자 또는 역할에 Storage Vault 사용 권한을 부여하여, 테이블 생성 시 Vault를 참조하거나 Vault 정보를 조회할 수 있는 사용자를 제어할 수 있습니다.

Storage Vault에 대한 USAGE_PRIV 권한이 있는 사용자 또는 역할은 다음 작업을 수행할 수 있습니다:

  • SHOW STORAGE VAULTS를 통해 Storage Vault 정보 조회
  • 테이블 생성 시 PROPERTIES에 Storage Vault 지정

권한 부여​

구문

GRANT
USAGE_PRIV
ON STORAGE VAULT <vault_name>
TO { ROLE | USER } {<role> | <user>}

예제

GRANT USAGE_PRIV ON STORAGE VAULT my_storage_vault TO USER user1;

권한 회수​

구문

REVOKE
USAGE_PRIV
ON STORAGE VAULT <vault_name>
FROM { ROLE | USER } {<role> | <user>}

예제

REVOKE USAGE_PRIV ON STORAGE VAULT my_storage_vault FROM USER user1;

자주 묻는 질문​

Q1: 특정 Storage Vault를 참조하는 테이블은 어떻게 확인하나요?​

1단계: SHOW STORAGE VAULTS를 실행하여 대상 Storage Vault의 storage_vault_id를 확인합니다.

2단계: 다음 SQL을 실행하여 해당 Vault를 참조하는 테이블을 쿼리합니다. PROPERTY_VALUE=3을 실제 storage_vault_id 값으로 바꾸세요:

SELECT *
FROM information_schema.table_properties
WHERE PROPERTY_NAME = "storage_vault_id"
AND PROPERTY_VALUE = 3;

쿼리 결과 예시:

+---------------+---------------------------------+-------------------------------------+------------------+----------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | PROPERTY_NAME | PROPERTY_VALUE |
+---------------+---------------------------------+-------------------------------------+------------------+----------------+
| internal | regression_test_vault_p0_create | s3_92ba28c209154d968e680e58dd54d0cc | storage_vault_id | 3 |
+---------------+---------------------------------+-------------------------------------+------------------+----------------+
1 row in set (0.04 sec)

Q2: 테이블을 생성한 후 Storage Vault를 변경할 수 있나요?​

변경할 수 없습니다. 테이블이 성공적으로 생성되면 해당 테이블의 storage_vault 속성은 수정할 수 없습니다. 다른 Storage Vault를 사용하려면 테이블을 다시 생성하고 데이터를 다시 적재해야 합니다.

Q3: Storage Vault의 이름을 변경하면 기존에 해당 Vault를 참조하던 데이터베이스에 영향이 있나요?​

네. Storage Vault의 VAULT_NAME을 수정하면 데이터베이스 수준의 storage_vault_name 설정이 유효하지 않게 되어 해당 데이터베이스에서 새 테이블을 생성할 때 오류가 발생할 수 있습니다. ALTER-DATABASE를 사용하여 데이터베이스에 유효한 storage_vault_name을 다시 지정해야 합니다.