スキーマの作成 - Amazon Redshift

スキーマの作成

新しいデータベースを作成した後は、そのデータベースに新しいスキーマを作成できます。スキーマとは、テーブル、ビュー、およびユーザー定義関数 (UDF) など、名前が付けられたデータベースオブジェクトが含まれる名前空間です。データベースには 1 つまたは複数のスキーマを含めることができ、各スキーマは 1 つのデータベースにのみ属します。2 つのスキーマが、同じ名前を共有する異なるオブジェクトを持つことができます。

同じデータベース内に複数のスキーマを作成して、好みの方法でデータを整理したり、データを機能的にグループ化したりできます。例えば、すべてのステージングデータを格納するスキーマや、すべてのレポートテーブルを保存する別のスキーマを作成できます。また、同じデータベースにある異なるビジネスグループに関連するデータを保存するために、別々のスキーマを作成することもできます。スキーマごとに、テーブル、ビュー、ユーザー定義関数 (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;