Syntaxe SQL pour la spécification du type de stockage
Cette section décrit les améliorations apportées à la syntaxe SQL de NPS pour spécifier et gérer les types de stockage pour les sources de données au niveau des tables et des bases de données. Ces améliorations offrent une plus grande flexibilité dans la configuration des options de stockage, similaire à la fonctionnalité existante du Lakehouse.
Le type de stockage d'une table existante ne peut pas être modifié une fois que la table a été créée. Une solution consiste à créer une nouvelle table à l'aide de CTAS (Create Table As Select), en spécifiant le type de stockage souhaité, puis à supprimer la table d'origine.
Configuration au niveau de la base de données
- Les utilisateurs peuvent configurer et modifier le type de stockage par défaut au niveau de la base de données.
- Cela permet un comportement de stockage cohérent pour toutes les tables d'une base de données, à moins qu'il ne soit modifié au niveau de chaque table.
Type de stockage par défaut
Le type de stockage par défaut est défini sur "bloc" au niveau du système. Il peut être modifié depuis la console.
Priorité du type de stockage pour la création de tables
Lors de la création d'une table, le système détermine le type de stockage en fonction de la priorité suivante :
- Instruction CREATE TABLE
- Paramètres au niveau de la session
- Paramètres au niveau de la base de données
- Paramétrage à l'échelle du système
La première et la plus haute priorité est la déclaration CREATE TABLE elle-même. Si l'adresse storagetype n'est pas explicitement spécifiée dans l'instruction, le système vérifie si un paramètre au niveau de la session
a été appliqué. Si ce n'est pas le cas, il recherche le type de stockage par défaut défini au niveau de la base de données. Si le paramètre au niveau de la base de données est "default", c'est le paramètre au niveau
du système DEFAULT_STORAGE_TYPE qui sera utilisé.
Visualisation du type de stockage de la table
Pour déterminer le type de stockage d'une table, interrogez la vue système _v_table:
SELECT TABLENAME, STORAGESOURCE, CASE WHEN STORAGESOURCE = 1 THEN 'BLOCK' WHEN STORAGESOURCE = 2 THEN 'OBJECT' END AS STORAGETYPE FROM _v_table WHERE TABLENAME like 'TEST_%';
Le type de stockage d'une table peut être déterminé à partir de la vue système _v_table. Ici, 1 représente block et 2 représente object.
| TABLENAME | STORAGESOURCE | STORAGETYPE |
|-----------|---------------|-------------|
| TEST_OBJ | 2 | OBJECT |
| TEST_BLK | 1 | BLOCK |
Une fois qu'une table est créée, son site storagetype ne peut pas être modifié. Pour copier une table vers un autre type de stockage, utilisez l'instruction CTAS (Create Table As Select) comme
suit :
CREATE TABLE t3 AS (SELECT * FROM t1) STORAGETYPE 'block';
Les parenthèses autour de la déclaration SELECT sont obligatoires
Vous ne pouvez pas spécifier storagetype pour les vues matérialisées. Le type de stockage est hérité de la table de base.
Lors d'une mise à niveau d'une version prenant en charge uniquement le stockage en bloc vers une version prenant en charge le stockage d'objets, toutes les tables existantes auront leur storagetype réglé sur 'block'.
Définition de storagetype pour une base de données
Le type de stockage par défaut à appliquer aux tables créées dans une base de données particulière peut être spécifié lors de la création de la base de données.
CREATE DATABASEdéclaration- Paramètres au niveau de la session
- Paramétrage à l'échelle du système
Vous pouvez définir le site storagetype par défaut pour une base de données lors de sa création :
CREATE DATABASE database1 STORAGETYPE 'block';
Si storagetype n'est pas spécifié, le système va :
- Vérifier s'il s'agit d'un paramètre au niveau de la session.
- Si aucun n'est trouvé, utiliser la valeur par défaut du système.
- Cette valeur est ensuite stockée en interne en tant que valeur par défaut de la base de données
storagetype.
Pour ne pas définir la valeur par défaut au niveau de la base de données, utilisez :
CREATE DATABASE database1 STORAGETYPE 'default';
Pour vérifier la valeur par défaut de storagetype pour les bases de données, interrogez la vue système _v_database:
SELECT DATABASE, STORAGETYPE FROM _v_database;
Exemple de sortie :
DATABASE | STORAGETYPE
----------+----------------
DB1 | BLOCK
DB2 | OBJECT
SYSTEM | SYSTEM DEFAULT
(3 rows)
Lors d'une mise à niveau d'une version prenant en charge uniquement le stockage en bloc vers une version prenant en charge le stockage d'objets, la valeur par défaut storagetype pour toutes les
bases de données existantes sera défini sur 'block'.
La valeur par défaut de storagetype associée à une base de données peut être modifiée à l'aide de la commande ALTER DATABASE.
-
Modifier le type de stockage de la base de données
ALTER DATABASE <database_name> STORAGETYPE '<storage_type>';