

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 스키마를 생성
<a name="t_creating_schema"></a>

새 데이터베이스를 생성한 후 현재 데이터베이스에서 새 스키마를 생성할 수 있습니다. *스키마*는 테이블, 뷰 및 사용자 정의 함수(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](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_SCHEMA.html) 섹션을 참조하세요.

데이터베이스의 스키마 목록을 보려면 다음 명령을 실행합니다.

```
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 데이터베이스 개발자 안내서*의 [카탈로그 테이블 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/c_join_PG.html)를 참조하세요.

GRANT 문을 사용하여 사용자에게 스키마에 대한 권한을 부여합니다.

다음 예에서는 SELECT 문을 사용하여 `SALES` 스키마의 모든 테이블 또는 뷰에서 데이터를 선택할 수 있는 권한을 `GUEST` 사용자에게 부여합니다.

```
GRANT SELECT ON ALL TABLES IN SCHEMA SALES TO GUEST;
```

다음 예에서는 `GUEST` 사용자에게 사용 가능한 모든 권한을 한 번에 부여합니다.

```
GRANT ALL ON SCHEMA SALES TO GUEST;
```