スキーマの作成
新しいデータベースを作成した後は、そのデータベースに新しいスキーマを作成できます。スキーマとは、テーブル、ビュー、およびユーザー定義関数 (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;