HQbird 2024R2 Update 10 Detailed What is New
Visualizações Materializadas (Novo Recurso no 5.0)
O HQbird agora inclui suporte completo a Visualizações Materializadas — um novo tipo de objeto de banco de dados que combina a definição de uma view com o armazenamento físico de uma tabela regular.
Visão Geral
Uma Visualização Materializada (MV) é definida por meio de uma consulta SQL padrão, que o mecanismo utiliza para popular a tabela MV subjacente com linhas de dados. Ao contrário das views regulares, os dados de uma MV são persistidos em disco e podem ser indexados. Instruções DML (INSERT, UPDATE, DELETE) não são permitidas diretamente em MVs — os dados devem ser atualizados pelo novo comando REFRESH.
Criação e Gerenciamento de Visualizações Materializadas
CREATE [OR ALTER] MATERIALIZED VIEW — cria ou substitui uma MV com carga inicial de dados opcional (WITH DATA / WITH NO DATA).
ALTER MATERIALIZED VIEW — modifica a definição da MV; remove automaticamente todos os índices existentes.
RECREATE MATERIALIZED VIEW — remove qualquer view existente (regular ou materializada) com o mesmo nome e cria uma nova MV.
DROP VIEW — utilizado para remover uma visualização materializada (não existe comando DROP MATERIALIZED VIEW separado).
- Índices de qualquer tipo podem ser criados em MVs. Restrições e triggers não são suportados.
Conversão entre Tipos de View
ALTER MATERIALIZED VIEW ... TO NOT MATERIALIZED — converte uma MV em uma view regular. Todos os índices e dados são removidos.
ALTER VIEW ... TO MATERIALIZED — converte uma view regular em uma visualização materializada. Objetos dependentes não são afetados.
Atualização dos Dados da Visualização Materializada
O novo comando REFRESH MATERIALIZED VIEW atualiza o conteúdo da MV. É um comando DDL — a execução é adiada até que a transação atual seja confirmada. Quatro modos estão disponíveis:
- Recarga completa (modo exclusivo) —
REFRESH MATERIALIZED VIEW <nome>
- Desativa índices, exclui todos os dados existentes, recarrega a partir da consulta da MV e reativa os índices.
- Opção mais rápida quando muitas linhas foram alteradas.
- Requer bloqueio exclusivo na tabela MV.
- Em caso de erro na carga: os dados recém-carregados são excluídos e os índices são reativados como vazios.
- Em caso de erro na ativação de índice: o índice afetado permanece inativo; dados e outros índices não são afetados. Erros de construção de índice são reportados como avisos.
- Atualização concorrente —
REFRESH MATERIALIZED VIEW <nome> CONCURRENTLY
- Não requer bloqueio exclusivo — consultas concorrentes na MV são permitidas durante a atualização.
- Utiliza algoritmo de mesclagem com dois cursores ordenados: um para os dados atuais da MV e outro para os resultados da consulta.
- Insere novas linhas, atualiza linhas alteradas e exclui linhas removidas — tudo sob controle de transação.
- Requer índice único na MV.
- Preferível quando acesso concorrente é necessário ou quando poucas linhas foram alteradas desde a última atualização.
- Observação: se a consulta da MV contiver
ORDER BY, a ordem das linhas pode não ser preservada após a atualização concorrente.
- Exclusão de todos os dados —
REFRESH MATERIALIZED VIEW <nome> DROP DATA
- Exclui todos os dados e conteúdo dos índices da MV. Útil para liberar espaço em disco. Requer bloqueio exclusivo.
- Atualização em cascata — acrescente
CASCADE a qualquer uma das formas acima
- Atualiza todas as MVs das quais a MV especificada depende, na ordem correta de dependência.
- Cada MV é processada apenas uma vez.
CONCURRENTLY CASCADE exige que todas as MVs afetadas possuam índice único.
DROP DATA CASCADE exclui os dados de todas as MVs afetadas.
- Os nomes das MVs afetadas e a ordem de atualização são reportados como avisos no vetor de status antes do commit.
Backup e Restauração (gbak)
- Backup: os dados da MV não são armazenados no arquivo de backup, assim como nas views regulares — nenhum tratamento especial é necessário.
- Restauração: todas as MVs são atualizadas automaticamente ao final do processo de restauração, na ordem correta de dependência.
- Nova opção do gbak
-NO_MATVIEWS (pode ser abreviada para -NO_M) — ignora a atualização das MVs durante a restauração.
- Opção correspondente na API de Serviços:
isc_spb_res_no_matviews.
- Importante: um backup contendo MVs não pode ser restaurado em uma versão do Firebird que não suporte MVs. Utilize
ALTER MATERIALIZED VIEW ... TO NOT MATERIALIZED antes do backup ao migrar para uma versão anterior.
Limitações Conhecidas / Trabalhos Planejados
- Suporte a replicação — ainda não implementado.
- Triggers DDL — ainda não implementados.
- Verificação de direitos de acesso — ainda não implementada.
- Mensagens de erro — em revisão.
Backup e Recuperação
- Tarefa de backup de verificação: adicionada exclusão rotativa antes da compressão; coeficientes de cálculo de espaço em disco agora são configuráveis.
- Tarefa nBackup: lógica de omissão corrigida; algoritmo de renomeação do journal alterado para renomeação atômica com nova tentativa, evitando renomeações parciais.
- Diretório de backup e modelo de nome de arquivo para tarefas BRZ agora são configuráveis:
backup-directory — permite especificar o diretório de destino por banco de dados e tarefa.
backup-name — permite definir um modelo de nome de arquivo, ex.: brr_{0,date,yyyyMMdd_HH-mm-ss}.fbk.
- Validador de entrada adicionado: verifica a validade do nome do diretório e o cria automaticamente caso não exista.
Backup em Nuvem / Transferência de Arquivos
- Adicionado suporte ao upload de arquivos via protocolo Socket na tarefa cloudbackup (filetransfer).
- Opção de compressão seletiva por segmento removida — a compressão de arquivos para as tarefas correspondentes agora está sempre ativada.
Trace
- Adicionado
connection_id como campo adicional na configuração de trace.
- Processamento de relatório de trace: adicionados agrupamento e filtragem por nome de processo sem distinção de maiúsculas/minúsculas.
VSS Writer
- Registro de diagnóstico adicional adicionado — informações de estado do banco de dados agora são registradas, incluindo tamanho do banco, data e hora, e saída do
gstat -h.
Interface Web
- Melhorias na localização: traduções corrigidas e algoritmos de localização ajustados no console web.
- Adicionado elemento divisor visual com texto de rótulo nos diálogos web — permite o agrupamento lógico de elementos de formulário.
- Estratégia de cache-busting alterada para recursos do lado cliente (páginas web, JS, CSS), evitando que navegadores utilizem arquivos desatualizados após uma atualização.
Configuração
- Nomes dos campos de autorização do servidor atualizados (
sysdba/owner, serviceAPI).
- Parâmetro de configuração reservado adicionado para a definição de idioma/localidade da parte servidora (Java).
- Arquivos de configuração padrão corrigidos para corresponder às novas configurações padrão das tarefas de transferência de arquivos:
- Porta alterada de 8721 para 8722.
- Usuário padrão alterado de
admin2/admin3 para socketuser.
- Configuração de força de senha unificada para senha forte em todas as configurações.
- No registro de arquivo de licença KA, não é mais necessário especificar o prefixo de protocolo HTTP/HTTPS no campo de host.
Correções de Bugs
- Corrigido alerta crítico falso disparado quando todas as tarefas de um banco de dados estão temporariamente desativadas.
- Corrigido erro ao recuperar a lista de sessões de trace ativas em sistemas onde o usuário SYSDBA configurado não possui permissão para listar sessões de trace.
- Corrigido bug em componente de descriptografia de terceiros que não tratava corretamente caminhos com codificação UTF-8. Observação: até que o serviço mon/trace seja atualizado e recompilado, caracteres UTF-8 em caminhos de arquivos ou bancos de dados podem ainda causar erros na saída do mon/trace.
- Corrigido problema no manipulador de configuração de replicação que mantinha incorretamente chaves com valores vazios.
- Corrigido o tratamento de
journal_archive_command para Firebird 4 e versões posteriores (alinhado com a correção upstream em firebird/firebird PR #8381).
- Corrigidos erros no plugin gerador de configuração
dg2fbcc.jar e no código de invocação correspondente.
Instalador e Build
- Instalador Windows atualizado com scripts e lógica revisados.
- Binários das bibliotecas cliente atualizados.
- OpenSSL atualizado para uma versão mais recente.
- Ramificações de código condicionais adicionadas para variantes de build específicas por produto.
- Assinatura de arquivos adicionada ao processo de build do instalador.
Infraestrutura de Localização do Lado Servidor
Um mecanismo de localização para mensagens de texto da parte servidora (Java) foi implementado. Os arquivos de localidade estão preparados, mas ainda não foram preenchidos com traduções, e o mecanismo não está ativo em produção. Esta infraestrutura destina-se à futura localização das mensagens do servidor.