Criando e alterando objetos para viagens no tempo
Visão geral
Para executar consultas de viagens no tempo em NPSaaS, crie uma tabela de viagens de tempo, esquema ou banco de dados (objetos de viagem no tempo) configurando-se DATA_VERSION_RETENTION_TIME (intervalo de tempo de retenção) a um valor não zero. Para configurar DATA_VERSION_RETENTION_TIME, use o comando CREATE ou ALTER para esses tipos de objeto ou use o console da Web Você pode selecionar entre 1 dia e até 99 dias, ou zero para alterar um objeto temporal para nontemporal.
Antes de configurar os intervalos de tempo de retenção para todas as tabelas em um esquema ou banco de dados, considere o custo de armazenamento para tabelas temporais, o que poderia ser significativo. Veja Gerenciando o uso do espaço de viagens.
Além disso, você pode configurar um padrão DATA_VERSION_RETENTION_TIME para o sistema.
As tabelas temporais geralmente têm linhas e linhas históricas atuais. As linhas atuais não são marcadas para exclusão. As linhas históricas são marcadas para exclusão (pelas instruções DELETE, UPDATE, MERGE ou TRUNCATE ) e são visíveis para consultas de viagens de tempo até o intervalo de tempo de retenção especificado passadas por seus timestamps de exclusão.
Uma tabela com um valor DATA_VERSION_RETENTION_TIME de zero é nontemporal. Apenas as linhas atuais (não excluídas) são visíveis para consultas. Algumas linhas históricas podem ser preservadas para fins de backup incremental, mas as linhas não são acessíveis para consultas de viagem no tempo.
Se você alterar DATA_VERSION_RETENTION_TIME de uma tabela temporal existente para zero, a tabela torna-se uma tabela não temporal. Ele não suporta mais o acesso a dados históricos com consultas de viagens no tempo.
Limitações
Alterações nos intervalos de tempo de retenção para tabelas, esquemas e bancos de dados não são replicados do primário para nós de réplica. Também não são linhas de tabela históricas (excluídas).
Intervalos de tempo de retenção de tabelas, esquemas e bancos de dados são automaticamente apoiados pelo comando nzbackup e restaurados pelo comando nzrestore. Os timestamps de inserção e exclusão de linhas de tabela
não são apoiados e restaurados. Linhas restauradas get fresh insert timestamps no banco de dados ou sistema de destino, e linhas que foram excluídas por restauração incremental get fresh delete timestamps no banco de dados de destino ou sistema.
Não há expectativa ou garantia de que o número de versões históricas de uma linha no alvo combinará com isso no banco de dados de origem. Por exemplo, uma linha específica pode ser atualizada várias vezes, ou obter atualização e, em seguida,
excluída, entre incrementos de backup na fonte. Essas ações resultam em uma única exclusão dessa linha no destino.
Se você tentar expandir o seu sistema NPSaaS com gabinetes adicionais de SPU, o procedimento resulta na perda de linhas históricas (excluídas). Todas as linhas atuais são redistribuídas com timestamps de inserção fresca.
Os seguintes tipos de tabelas não podem ser tabelas temporais:
- Tabelas temporárias
- Tabelas externas
- Tabelas versionadas que foram alteradas por adicionar e / ou eliminar colunas
- Tabelas seguras de linha.
Esta limitação afeta os seguintes comandos:
-
CREATE TABLE ROW SECURITY, CREATE EXTERNAL TABLE, CREATE TEMPORARY TABLE Se DATA_VERSION_RETENTION_TIME for especificado com um valor diferente de zero, os comandos falharão.
-
ALTERAR TABELA DATA_VERSION_RETENTION_TIME Se a tabela for temporária, segura por linha, com versão ou uma tabela externa e DATA_VERSION_RETENTION_TIME for especificado com um valor diferente de zero, o comando falhará.
-
ALTER TABLE ADD COLUMN, ALTER TABLE DROP COLUMN Se a tabela tiver um DATA_VERSION_RETENTION_TIME diferente de zero especificado, o comando falhará.
O comando GROOM TABLE VERSIONS transforma uma tabela com versão em sem versão. Quando isso ocorrer, será possível especificar um DATA_VERSION_RETENTION_TIME diferente de zero com o comando ALTER TABLE.
Exceções relacionadas a DATA_VERSION_RETENTION_TIME para watsonx.data
Há exceções para watsonx.data relacionadas a DATA_VERSION_RETENTION_TIME. A tabela a seguir cobre o comportamento da propriedade DATA_VERSION_RETENTION_TIME para bancos de dados, esquemas e tabelas para watsonx.data.
| Comportamento | Excepção |
|---|---|
| CREATE DATABASE com DATA_VERSION_RETENTION_TIME para watsonx.data | Não permitido |
| ALTER DATABASE com DATA_VERSION_RETENTION_TIME para watsonx.data | Não permitido |
| CREATE SCHEMA com DATA_VERSION_RETENTION_TIME para watsonx.data | Não permitido |
| ALTER SCHEMA com DATA_VERSION_RETENTION_TIME para watsonx.data | Não permitido, exceto para NETEZZA_SCHEMA |
| CREATE TABLE com a tabela DATA_VERSION_RETENTION_TIME (temporal) | Permitido apenas sob NETEZZA_SCHEMA |
| ALTER TABLE com a tabela DATA_VERSION_RETENTION_TIME (temporal) | Permitido apenas sob NETEZZA_SCHEMA |
Se SYSTEM DEFAULT DATA_VERSION_RETENTION_TIME for diferente de zero, CREATE DATABASE não herdará a propriedade de SYSTEM DEFAULT. CREATE SCHEMA incluindo NETEZZA_SCHEMA não herdará a propriedade do BD. Não haverá impacto ou mudanças necessárias para a tarefa automática relacionada à viagem no tempo para watsonx.data.
Criando objetos de viagem no tempo com a linha de comando
Criando tabelas temporais com a linha de comandos
Para criar uma tabela temporal, configure DATA_VERSION_RETENTION_TIME para um valor não zero.
Para sintaxe detalhada e privilégios, consulte o comando CREATE TABLE.
CREATE TABLE <tablename> ( <col>[, <col>… ] ) DATA_VERSION_RETENTION_TIME <number-of-days>;
Exemplo:
CREATE TABLE PRODUCT (prodid int, proddesc char(100)) DATA_VERSION_RETENTION_TIME 30;
Quando você insere uma linha na tabela, a linha recebe um timestamp de inserção virtual que é igual ao tempo de confirmação da transação de inserção.
Quando você exclui uma linha da tabela, a linha recebe um timestamp de exclusão virtual que é igual ao tempo de confirmação da transação de exclusão (ou truncamento).
Criando esquemas temporais com a linha de comandos
Para criar um esquema temporal, configure DATA_VERSION_RETENTION_TIME para um valor não zero.
Para sintaxe detalhada e privilégios, consulte o comando CREATE SCHEMA.
CREATE SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME <number-of-days>;
Exemplo:
CREATE SCHEMA SCHEMA1 DATA_VERSION_RETENTION_TIME 30;
Criando bancos de dados temporais com a linha de comandos
Para criar um banco de dados temporal, configure DATA_VERSION_RETENTION_TIME para um valor não zero.
Para sintaxe detalhada e privilégios, consulte o comando CREATE DATABASE.
CREATE DATABASE <db_name> DATA_VERSION_RETENTION_TIME <number-of-days>;
Exemplo:
CREATE DATABASE DB1 DATA_VERSION_RETENTION_TIME 30;
Criando objetos de viagem no tempo com o console da web
Criando tabelas temporais com o console da web
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Crie uma tabela temporal, conforme descrito em Criando tabelas
Deve-se configurar intervalo de tempo de retenção para um valor diferente de zero.
Bancos de dados, esquemas e nomes de tabelas contendo um caractere de ponto (".") não é mostrado nas estatísticas de viagem no tempo e gráficos quando você configura o intervalo de tempo de retenção para um valor diferente de zero. Quando você não configurar o intervalo de tempo de retenção, todos os caracteres especiais serão suportados.
Quando você insere uma linha na tabela, a linha recebe um timestamp de inserção virtual que é igual ao tempo de confirmação da transação de inserção.
Quando você exclui uma linha da tabela, a linha recebe um timestamp de exclusão virtual que é igual ao tempo de confirmação da transação de exclusão (ou truncamento).
Criando Esquemas Temporais com o Console da web
Para criar um esquema temporal, configure intervalo de tempo de retenção para um valor diferente de zero.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Crie um esquema temporal conforme descrito em Criando esquemas.
Criando bancos de dados temporais com a linha de comandos
Para criar um banco de dados temporal, configure intervalo de tempo de retenção para um valor diferente de zero.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Crie um banco de dados temporal, conforme descrito em Criando bancos de dados
Alterando Objetos de Viagem no Tempo com a Linha de Comandos
Alterando tabelas temporais para não temporais com a linha de comandos
Para alterar uma tabela temporal para não temporal, configure DATA_VERSION_RETENTION_TIME para 0.
Para a sintaxe detalhada e os privilégios necessários, consulte o comando ALTER TABLE.
ALTER TABLE <table> DATA_VERSION_RETENTION_TIME 0;
Exemplo:
ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 0;
Quando você configura DATA_VERSION_RETENTION_TIME para 0, não é possível executar consultas de viagens de tempo e você não tem mais acesso a linhas históricas para aquela tabela. Você pode reaver algumas ou todas as linhas históricas agora inacessíveis na tabela com GROOM TABLE.
Alterando tabelas não temporais para temporais com a linha de comandos
Para alterar uma tabela não temporal para temporal, configure DATA_VERSION_RETENTION_TIME] para um valor não zero.
Para a sintaxe detalhada e os privilégios necessários, consulte o comando ALTER TABLE.
ALTER TABLE <table> DATA_VERSION_RETENTION_TIME <number-of-days>;
Exemplo:
ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 30;
Se você desativou pela primeira vez sua tabela temporal e depois converteu a mesma tabela para uma tabela temporal, você não terá acesso às linhas históricas anteriores para aquela tabela. Os dados históricos são coletados quando as linhas são excluídas ou atualizadas depois que a tabela é convertida em temporal.
Como acontece com o comando CREATE TABLE, uma linha que é inserida na tabela recebe um timestamp de inserção virtual que é igual ao tempo de confirmação da transação de inserção. Uma linha que é excluída da tabela recebe um timestamp de exclusão virtual que é igual ao tempo de confirmação da transação de exclusão (ou truncamento). O tempo de início de retenção da tabela de retenção da tabela e o tempo de início de retenção são iguais ou pouco antes do tempo de confirmação desta transação ALTER TABLE.
Ao contrário do comando CREATE TABLE, que não possui nenhuma linha existente, as linhas visíveis existentes na tabela são tratadas como se elas fossem inseridas por esta transação ALTER TABLE. As linhas visíveis existentes recebem timestamps de inserção virtual que são iguais ao tempo de início de retenção. Com esses timestamps, as linhas são potencialmente visíveis para consultas de viagem no tempo.
Alterando esquemas temporais para não temporais com a linha de comandos
Para alterar um esquema temporal para nontemporal, configure DATA_VERSION_RETENTION_TIME para 0.
Para obter sintaxe detalhada, os privilégios necessários e a opção CASCADE, consulte o comando ALTER SCHEMA.
ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;
Exemplo:
ALTER SCHEMA SCHEMA DATA_VERSION_RETENTION_TIME 0 NOCASCADE;
Alterando esquemas não temporais para temporais com a linha de comandos
Para alterar um esquema não temporal para temporal, configure DATA_VERSION_RETENTION_TIME para um valor não zero.
Para obter sintaxe detalhada, os privilégios necessários e a opção CASCADE, consulte o comando ALTER SCHEMA.
ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME <number-of-days> NOCASCADE;
Exemplo:
ALTER SCHEMA DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;
Alterando bancos de dados temporais para não temporais com a linha de comandos
Para alterar um banco de dados temporal para nontemporal, configure DATA_VERSION_RETENTION_TIME para 0.
Para obter sintaxe detalhada e os privilégios necessários, consulte o comando ALTER DATABASE.
ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;
Exemplo:
ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 0 NOCASCADE;
Alterando bancos de dados não temporais para temporais com a linha de comandos
Para alterar um banco de dados não temporal para temporal, configure DATA_VERSION_RETENTION_TIME para um valor não zero.
Para obter sintaxe detalhada e os privilégios necessários, consulte o comando ALTER DATABASE.
ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME <number-of-days> NOCASCADE;
Exemplo:
ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;
Alterando objetos de viagem no tempo com o console da web
Alterando tabelas temporais para não temporais com o console da web
Para alterar uma tabela temporal para não temporal, configure intervalo de Tempo de Retenção como 0.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Altere sua tabela conforme descrito em Atualizando intervalo de tempo de retenção para tabelas.
Quando você configura intervalo de tempo de retenção como 0, não é possível executar consultas de viagem no tempo e você não tem mais acesso a linhas históricas para essa tabela Você pode reaver algumas ou todas as linhas históricas agora inacessíveis na tabela com GROOM TABLE.
Alterando tabelas não temporais para temporais com o console da web
Para alterar uma tabela não temporal para temporal, configure intervalo de tempo de retenção para um valor diferente de zero.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Altere sua tabela conforme descrito em Atualizando intervalo de tempo de retenção para tabelas.
Se você desativou pela primeira vez sua tabela temporal e depois converteu a mesma tabela para uma tabela temporal, você não terá acesso às linhas históricas anteriores para aquela tabela. Os dados históricos são coletados quando as linhas são excluídas ou atualizadas depois que a tabela é convertida em temporal.
Da mesma forma que quando você cria uma tabela, uma linha inserida na tabela recebe um registro de data e hora de inserção virtual que é igual ao tempo de confirmação da transação de inserção. Uma linha que é excluída da tabela recebe um timestamp de exclusão virtual que é igual ao tempo de confirmação da transação de exclusão (ou truncamento). O limite inferior de retenção e o horário de início de retenção da tabela são iguais a ou pouco antes do horário de confirmação desta transação de alteração..
Ao contrário de quando você cria uma tabela, as linhas visíveis existentes na tabela são tratadas como se tivessem sido inseridas por essa transação de alteração As linhas visíveis existentes recebem timestamps de inserção virtual que são iguais ao tempo de início de retenção. Com esses timestamps, as linhas são potencialmente visíveis para consultas de viagem no tempo.
Alterando esquemas temporais para não temporais com o console da web
Para alterar um esquema temporal para não temporal, configure intervalo de tempo de retenção para 0.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Altere sua tabela conforme descrito em Atualizando intervalo de tempo de retenção para esquemas.
Alterando esquemas não temporais para temporais com o console da web
Para alterar um esquema não temporal para temporal, configure intervalo de tempo de retenção para um valor não zero.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Altere sua tabela conforme descrito em Atualizando intervalo de tempo de retenção para esquemas.
Alterando bancos de dados temporais para não temporais com o console da web
Para alterar um banco de dados temporal para não temporal, configure intervalo de tempo de retenção para 0.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Altere sua tabela conforme descrito em Atualizando intervalo de tempo de retenção para bancos de dados.
Alterando bancos de dados não temporais para temporais com o console da web
Para alterar um banco de dados não temporal para temporal, configure intervalo de tempo de retenção para um valor diferente de zero.
- Efetue login no console da web, conforme descrito em Introdução ao console da web
- Altere sua tabela conforme descrito em Atualizando intervalo de tempo de retenção para bancos de dados.
O quê fazer em seguida
Depois que você criou objetos de viagem de tempo, você pode começar a executar consultas de viagem no tempo. Para obter mais informações, consulte os links a seguir: