새 데이터베이스를 생성한 후 현재 데이터베이스에서 새 스키마를 생성할 수 있습니다. 스키마는 테이블, 뷰 및 사용자 정의 함수(UDF)와 같은 명명된 데이터베이스 객체를 포함하는 네임스페이스입니다. 데이터베이스는 하나 또는 여러 개의 스키마를 포함할 수 있으며 각 스키마는 하나의 데이터베이스에만 속합니다. 두 스키마에는 동일한 이름을 공유하는 서로 다른 객체가 있을 수 있습니다.
동일한 데이터베이스에 여러 스키마를 생성하여 원하는 방식으로 데이터를 구성하거나 데이터를 기능적으로 그룹화할 수 있습니다. 예를 들어 모든 스테이징 데이터를 저장하는 스키마와 모든 보고 테이블을 저장하는 다른 스키마를 생성할 수 있습니다. 동일한 데이터베이스에 있는 다른 비즈니스 그룹과 관련된 데이터를 저장하기 위해 다른 스키마를 생성할 수도 있습니다. 각 스키마는 테이블, 뷰 및 사용자 정의 함수(UDF)와 같은 서로 다른 데이터베이스 객체를 저장할 수 있습니다. 또한 AUTHORIZATION 절을 사용하여 스키마를 생성할 수 있습니다. 이 절은 지정된 사용자에게 소유권을 부여하거나 지정된 스키마가 사용할 수 있는 최대 디스크 공간에 대한 할당량을 설정합니다.
Amazon Redshift는 모든 새 데이터베이스에 대해 public
이라는 스키마를 자동으로 생성합니다. 데이터베이스 객체를 생성할 때 스키마 이름을 지정하지 않으면 객체가 public
스키마에 들어갑니다.
스키마의 객체에 액세스하려면 schema_name.table_name
표기법을 사용하여 객체를 정규화합니다. 스키마의 정규화된 이름은 점으로 구분된 스키마 이름과 테이블 이름으로 구성됩니다. 예를 들어 price
테이블이 있는 sales
스키마와 price
테이블도 있는 inventory
스키마가 있을 수 있습니다. price
테이블을 참조할 때 반드시 sales.price
또는 inventory.price
로 정규화해야 합니다.
다음 예에서는 사용자 GUEST
에 대해 SALES
라는 스키마를 생성합니다.
CREATE SCHEMA SALES AUTHORIZATION GUEST;
더 많은 명령 옵션에 대한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 CREATE SCHEMA 섹션을 참조하세요.
데이터베이스의 스키마 목록을 보려면 다음 명령을 실행합니다.
select * from pg_namespace;
출력은 다음과 유사합니다.
nspname | nspowner | nspacl
----------------------+----------+--------------------------
sales | 100 |
pg_toast | 1 |
pg_internal | 1 |
catalog_history | 1 |
pg_temp_1 | 1 |
pg_catalog | 1 | {rdsdb=UC/rdsdb,=U/rdsdb}
public | 1 | {rdsdb=UC/rdsdb,=U/rdsdb}
information_schema | 1 | {rdsdb=UC/rdsdb,=U/rdsdb}
카탈로그 테이블을 쿼리하는 방법에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 카탈로그 테이블 쿼리를 참조하세요.
GRANT 문을 사용하여 사용자에게 스키마에 대한 권한을 부여합니다.
다음 예에서는 SELECT 문을 사용하여 SALES
스키마의 모든 테이블 또는 뷰에서 데이터를 선택할 수 있는 권한을 GUEST
사용자에게 부여합니다.
GRANT SELECT ON ALL TABLES IN SCHEMA SALES TO GUEST;
다음 예에서는 GUEST
사용자에게 사용 가능한 모든 권한을 한 번에 부여합니다.
GRANT ALL ON SCHEMA SALES TO GUEST;