Sintaxe SQL para especificação do tipo de armazenamento
Esta seção descreve os aprimoramentos da sintaxe SQL do NPS para especificar e gerenciar tipos de armazenamento para recursos de dados nos níveis de tabela e de banco de dados. Essas melhorias proporcionam maior flexibilidade na configuração das opções de armazenamento, semelhante à funcionalidade existente no Lakehouse.
O tipo de armazenamento de uma tabela existente não pode ser alterado após a criação da tabela. Uma solução alternativa seria criar uma nova tabela usando CTAS (Create Table As Select), especificando o tipo de armazenamento desejado e excluir a tabela original.
Configuração no nível do banco de dados
- Os usuários podem configurar e modificar o tipo de armazenamento padrão no nível do banco de dados.
- Isso permite um comportamento de armazenamento consistente em todas as tabelas de um banco de dados, a menos que seja substituído no nível da tabela individual.
Tipo de armazenamento padrão
O tipo de armazenamento padrão é definido como "bloco" no nível do sistema. Pode ser modificado a partir do console.
Precedência do tipo de armazenamento para a criação de tabelas
Ao criar uma tabela, o sistema determina o tipo de armazenamento com base na seguinte precedência:
- Instrução de criação de tabela
- Configuração em nível de sessão
- Configuração em nível de banco de dados
- Configuração em todo o sistema
A primeira e mais alta precedência é a própria declaração CREATE TABLE. Se o endereço storagetype não for explicitamente especificado na declaração, o sistema verificará se uma configuração em nível de sessão foi aplicada.
Caso contrário, ele procura o tipo de armazenamento padrão definido no nível do banco de dados. Se a configuração em nível de banco de dados for "default", será usada a configuração de todo o sistema DEFAULT_STORAGE_TYPE.
Exibição do tipo de armazenamento da tabela
Para determinar o tipo de armazenamento de uma tabela, consulte a visualização do sistema _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_%';
O tipo de armazenamento de uma tabela pode ser determinado na visualização do sistema _v_table. Aqui, 1 representa block e 2 representa object.
| TABLENAME | STORAGESOURCE | STORAGETYPE |
|-----------|---------------|-------------|
| TEST_OBJ | 2 | OBJECT |
| TEST_BLK | 1 | BLOCK |
Depois que uma tabela é criada, seu endereço storagetype não pode ser alterado. Para copiar uma tabela para um tipo de armazenamento diferente, use a instrução CTAS (Create Table As Select) da
seguinte forma:
CREATE TABLE t3 AS (SELECT * FROM t1) STORAGETYPE 'block';
São necessários parênteses ao redor da declaração SELECT
Não é possível especificar storagetype para exibições materializadas. O tipo de armazenamento é herdado da tabela de base.
Durante uma atualização de uma versão que suporta apenas o armazenamento em bloco para uma que suporta o armazenamento em objeto, todas as tabelas existentes terão seu storagetype definido como
'block'.
Configuração de storagetype para um banco de dados
O tipo de armazenamento padrão a ser aplicado às tabelas criadas em um determinado banco de dados pode ser especificado durante a criação do banco de dados.
CREATE DATABASEdeclaração- Configuração em nível de sessão
- Configuração em todo o sistema
Você pode definir o endereço storagetype padrão para um banco de dados durante a criação:
CREATE DATABASE database1 STORAGETYPE 'block';
Se storagetype não for especificado, o sistema irá:
- Verifique se há uma configuração em nível de sessão.
- Se nenhum for encontrado, use o padrão de todo o sistema.
- Esse valor é então armazenado internamente como o padrão do banco de dados
storagetype.
Para deixar o padrão não definido no nível do banco de dados, use:
CREATE DATABASE database1 STORAGETYPE 'default';
Para verificar o padrão storagetype para bancos de dados, consulte a visualização do sistema _v_database:
SELECT DATABASE, STORAGETYPE FROM _v_database;
Saída de exemplo:
DATABASE | STORAGETYPE
----------+----------------
DB1 | BLOCK
DB2 | OBJECT
SYSTEM | SYSTEM DEFAULT
(3 rows)
Durante uma atualização de uma versão que suporta apenas o armazenamento em bloco para uma versão que suporta o armazenamento em objeto, o endereço padrão storagetype para todos os bancos de dados
existentes será definido como 'block'.
O storagetype padrão associado a um banco de dados pode ser alterado com o comando ALTER DATABASE.
-
Alterar o tipo de armazenamento do banco de dados
ALTER DATABASE <database_name> STORAGETYPE '<storage_type>';