CREATE SCHEMA - Amazon Redshift

CREATE SCHEMA

Définit un nouveau schéma pour la base de données actuelle.

Syntaxe

CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION username ] [ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] CREATE SCHEMA AUTHORIZATION username[ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] ]

Paramètres

IF NOT EXISTS

Clause indiquant que si le schéma spécifié existe déjà, la commande ne doit faire aucune modification et retourner un message selon lequel le schéma existe, plutôt que de mettre fin avec une erreur.

Comme cette clause est utile lors de l'écriture de scripts, le script n'échoue pas si CREATE SCHEMA tente de créer un schéma qui existe déjà.

nom_schéma

Nom du nouveau schéma. Le nom du schéma ne peut pas être PUBLIC. Pour plus d'informations sur les noms valides, consultez Noms et identificateurs.

Note

La liste des schémas du paramètre de configuration search_path détermine la priorité des objets portant le même nom quand il y est fait référence sans noms de schéma.

AUTHORIZATION

Clause qui accorde la propriété à un utilisateur spécifié.

nom d'utilisateur

Nom du propriétaire du schéma.

élément_schéma

Définition d'un ou de plusieurs objets à créer dans le schéma.

QUOTA

Quantité maximale d'espace disque que le schéma spécifié peut utiliser. Cet espace est l'utilisation collective du disque. Il inclut toutes les tables permanentes, les vues matérialisées sous le schéma spécifié et les copies dupliquées de toutes les tables avec la distribution ALL sur chaque nœud de calcul. Le quota de schéma ne prend pas en compte les tables temporaires créées dans le cadre d'un espace de noms ou d'un schéma temporaire.

Amazon Redshift convertit la valeur sélectionnée en mégaoctets. Le gigaoctet est l'unité de mesure par défaut lorsque vous ne spécifiez pas de valeur.

Vous devez être un superutilisateur de base de données pour définir et modifier un quota de schéma. Un utilisateur qui n'est pas un superutilisateur mais qui dispose de l'autorisation CREATE SCHEMA peut créer un schéma avec un quota défini. Lorsque vous créez un schéma sans définir de quota, le schéma dispose d'un quota illimité. Lorsque vous définissez le quota en dessous de la valeur actuelle utilisée par le schéma, Amazon Redshift ne permet pas d'ingestion supplémentaire tant que vous n'avez pas libéré d'espace disque. Une instruction DELETE supprime les données d'une table et l'espace disque n'est libéré que lorsque VACUUM s'exécute.

Amazon Redshift vérifie chaque transaction pour les violations des quotas avant de procéder à la transaction. Amazon Redshift vérifie la taille (l'espace disque utilisé par toutes les tables d'un schéma) de chaque schéma modifié par rapport au quota défini. Étant donné que la vérification des violations de quota se produit à la fin d'une transaction, la limite de taille peut dépasser temporairement le quota dans une transaction avant qu'il ne soit validé. Lorsqu'une transaction dépasse le quota, Amazon Redshift abandonne la transaction, interdit les ingestions ultérieures et rétablit toutes les modifications jusqu'à ce que vous libériez de l'espace disque. En raison de VACUUM en arrière-plan et du nettoyage interne, il est possible qu'un schéma ne soit pas plein au moment où vous vérifiez le schéma après une transaction annulée.

À titre exceptionnel, Amazon Redshift ne tient pas compte de la violation des quotas et commet des transactions dans certains cas. Amazon Redshift effectue cette opération pour les transactions qui consistent uniquement en une ou plusieurs des instructions suivantes lorsqu'il n'y a pas d'instruction d'ingestion INSERT ou COPY dans le même schéma :

  • DELETE

  • TRUNCATE

  • VACUUM

  • DROP TABLE

  • ALTER TABLE APPEND uniquement lors du déplacement de données du schéma complet vers un autre schéma non complet

UNLIMITED

Amazon Redshift n'impose aucune limite à la croissance de la taille totale du schéma.

Restrictions

Amazon Redshift applique les limites suivantes pour les schémas.

  • Il y a un maximum de 9900 schémas par base de données.

Exemples

L'exemple suivant crée un schéma nommé US_SALES et accorde la propriété à l'utilisateur DWUSER.

create schema us_sales authorization dwuser;

L'exemple suivant crée un schéma nommé US_SALES, donne la propriété à l'utilisateur DWUSER et définit le quota sur 50 Go.

create schema us_sales authorization dwuser QUOTA 50 GB;

Pour consulter le nouveau schéma, interrogez la table de catalogue PG_NAMESPACE comme illustré ci-après :

select nspname as schema, usename as owner from pg_namespace, pg_user where pg_namespace.nspowner = pg_user.usesysid and pg_user.usename ='dwuser'; schema | owner ----------+---------- us_sales | dwuser (1 row)

L'exemple suivant crée le schéma US_SALES, ou ne fait rien et retourne un message si le schéma existe déjà :

create schema if not exists us_sales;