Gerenciamento de armazenamento
O processo de gerenciamento de armazenamento permite visualizar e configurar a utilização de recursos de disco pelos arquivos armazenados no sistema que podem ser gravados por meio de duas APIs distintas: a Virtual File System e a Lob Storage.
Os arquivos da Virtual File System são gravados na base de dados utilizando as tabelas “iVfs” e “iVfsLob”, sendo organizados hierarquicamente em diretórios representados pelas classes de dados do sistema. Os dados dos arquivos podem fazer parte do cache local replicado em cada Engine, portanto, a Virtual File System deve ser utilizada para arquivos essenciais para o funcionamento do sistema, como scripts, configurações, imagens e outros recursos necessários para a construção das telas, ou para arquivos frequentemente acessados que precisem estar em cache em cada servidor local. Como os dados são distribuídos para cada instalação do Engine, o seu uso excessivo pode prejudicar o funcionamento do sistema.
A Lob Storage grava os arquivos na tabela “iLob” utilizando um modelo mais simples sem hierarquia de diretórios, onde os arquivos são agrupados apenas pela classe de dados, por padrão a “/Dados/Sistema/Lob Storage”. O conteúdo do arquivo pode ser gravado na própria tabela “iLob” ou em um serviço de armazenamento de objetos na nuvem. Por padrão, os conteúdos são gravados na própria tabela, sendo uma opção de configuração simples que funciona bem para bases de dados pequenas, pois permite que a base de dados relacional contenha todos os dados do sistema. No entanto, quando há um volume maior de arquivos é recomendado que eles sejam gravados em serviços de armazenamento de objetos em nuvem, pois esses serviços são mais eficientes, seguros e possuem um custo menor que o banco de dados relacional para essa finalidade.
A definição se os arquivos serão gravados na Virtual File System ou na Lob Storage é uma opção
de desenvolvimento durante a construção da solução. Deve-se optar entre duas APIs distintas, a
VirtualFileSystem
e
a
LobStorage
,
tendo cada uma comportamentos e características distintas que devem ser consideradas na
arquitetura da solução. Uma vez definida a API, não há uma forma de migrar os dados de um tipo
de armazenamento para outro sem a revisão da solução construída e a construção de um processo de
migração específico para essa solução.
A seguir são descritos em mais detalhes o processo de gerenciamento do armazenamento de arquivos do sistema e suas configurações mais relevantes.
Processo Gerenciamento de armazenamento
Caminho: Administração do sistema > Armazenamento de arquivos > Gerenciamento de armazenamento.
Na tela inicial do processo, é apresentado um resumo com a quantidade e o tamanho total dos arquivos armazenados no sistema, agrupados pelo tipo de arquivo do sistema. É possível por meio do botão “Exibir detalhes” visualizar os 50 maiores arquivos por tipo, permitindo avaliar se há algum arquivo com tamanho atípico para o tipo de arquivo verificado. Se necessário, a remoção ou atualização dos arquivos visualizados deve ser feita na interface responsável por adicionar esses arquivos na base de dados.
Serviços de armazenamento de objetos em nuvem
Por meio do botão “Configuração” o administrador do sistema pode definir onde o conteúdo dos arquivos da Lob Storage serão gravados. Na primeira grade, a “Configuração de armazenamento dos objetos”, deve ser associada a classe de dados dos arquivos a um serviço de armazenamento de objetos em nuvem que deve ter sido previamente configurado seguindo o manual Armazenamento de objetos.
Para armazenar todos os arquivos em um único serviço externo, basta associar a classe “Large objects” a esse serviço. Essa é uma configuração simples que funcionará bem para a maioria dos cenários. No entanto, também é possível criar regras mais complexas direcionando arquivos das classes filhas de “Large objects” para outras configurações de serviços que possuam regras distintas de retenção e disponibilidade.
Na segunda grade, a “Locais de armazenamento da Lob Storage”, é possível visualizar qual serviço de armazenamento está configurado por classe de dados filha de “Large objects”. Para uma configuração mais simples, com apenas um serviço configurado, serão exibidas todas as classes configuradas para o mesmo serviço. No entanto, em configurações mais complexas, essa grade torna claro o serviço de fato associado a uma classe de dados, considerando a herança da configuração na hierarquia de classes filhas de “Lob Storage”.
Após a alteração das configurações, os arquivos existentes não são migrados automaticamente. Para isso, deve-se retornar à página inicial do processo e utilizar o botão “Migração de dados”. Ao clicar nesse botão, serão exibidas as pendências de migração de arquivos por classe filha de “Lob storage”. A migração pode ser executada por meio do botão “Executar migração” após serem selecionadas as classes de dados que devem ser migradas.
Atualmente o processo de migração é realizado em blocos de 100 arquivos e pode demorar várias horas em bases com um grande volume de arquivos. Por esse motivo, é recomendado que o processo seja disparado diretamente em um servidor de aplicação para não depender da estação cliente estar ativa até a finalização da migração. Caso seja interrompido, ele pode ser disparado novamente para continuar a migração anterior.
Importante: a ativação de serviços de armazenagem de objetos em nuvem requer uma atenção quanto às políticas de backup e recuperação de dados empregadas no sistema, pois os dados passam a ser armazenados em um outro local além do banco de dados relacional. Mais detalhes no manual Backup e recuperação de dados.