Artigo
· Jul. 31 6min de leitura

Controle do crescimento da base de dados - Parte 1: Coleta de dados

Coleta de dados

Esse é um guia de instruções passo a passo para criar uma tarefa que coleta dados sobre a base InterSystems e as globais que contem (como se vê no App Open Exchange associado - encontre todo o código relacionado ali)

Termo de responsabilidade: Este software é meramente para fins de TESTE/DEMO. Este código não é suportado pela InterSystems como parte de nenhum produto. InterSystems o fornece como ferramenta de demonstração/teste para um produto e versão específicos. O usuário ou cliente é totalmente responsável pelo mantimento e teste deste software depois da entrega, e a InterSystems não terá nenhuma responsabilidade por erros ou mal uso deste código.

1) Em primeiro lugar, importe o arquivo «DataCollection.xml» através do portal de administração e assegure que não há erros. Se houver, pode se tratar de uma questão de versões. Entre em contato com Ari Glikman em ari.glikman@intersystems.com para que os ajude a obter uma versão adequada para você. Ademais, assegure que está importando os dados no namespace cujos dados internos deseja coletar para sua inspeção.

2) Uma vez finalizada a importação, você deve ver o pacote Sample/Muestra com vários subpacotes também.

image

Se um pacote de Sample/Muestra já está presente no seu servidor, então você deve ver os novos subpacotes junto com qualquer outra pasta que estava ali previamente.

3) Agora é o momento de executar os testes unitários para assegurar-se que tudo funciona corretamente.

a. Crie uma pasta chamada Unit Tests que possa ser lida pelo seu Terminal InterSystems. Por exemplo, como eu tenho uma instalação local, cria uma pasta em meu disco C.

FolderStructure

b. Nesta pasta exportaremos agora a classee Sample.DBExpansion.Test.CaptureTest como arquivo xml.

image

c. No terminal, defina a global ^UnitTestRoot = “<< pasta onde está Unit Tests>>”.. Segundo o exemplo anterior, seria (não se esqueça que você deve estar no mesmo namespace onde você importou o pacote) C:\ (note que não é “C:\Unit Tests” !)

set ^UnitTestRoot = "C:\"

d. Por último, executamos os testes unitários. Faça isso executando a seguinte linha de código no terminal:

do ##class(Sample.DBExpansion.Test.TestManager).RunTest("Unit Tests", "/noload/nodelete")

Essencialmente estamos dizendo ao programa que execute todos os testes que se encontram na pasta C:\Unit Tests. Por hora, só temos um arquivo ali, que é o criado no passo 3.b.

A saída deve ser a seguinte

UnitTestOutput

Se não passarem todas os testes unitários, então o programa não está pronto para ser executado. Não continue com os passos seguintes até que obtenha uma saída que diga que todos os testes passaram.

4) Felicidades! Agora é o momento de construir a tarefa. Para isso

a. Abra o portal de administração e vá a Operação de Sistema > Gerenciador de Tarefas > Nova tarefa

*Assegure que seu usuário tenha acesso ao namespace %SYS, se não a tarefa se executará, mas não coletará nenhum dado.

NewTask

Agora, há vários campos para completar acerca da tarefa que quer criar. Você deve escolher o namespace em que importou o pacote e dar um nome para a tarefa. Deverá dar uma descrição para futuras referências. O ideal é deixar a opção de verificação rápida sem marcar, isso significa que a tarefa se executará mais lentamente, mas coletará dados mais completos. Se demorar demais para executar (depende do tamanho que seja a base de dados e suas globais) , então talvez seja melhor marcar aqui e optar por uma tarefa mais rápida. HowManyGlobals indica quantos dados globais devem ser coletados: -1 indica todos os dados globais, e é a opção recomendada. Selecione Avançar, escolha com que frequência a tarefa deve ser executada e aperte em Finalizar.

Recording 2023-05-10 at 7 10 32 PM

b. Aparecerá o Calendário de Tarefas, onde poderá ver quando estão programadas todas as tarefas, incluindo a recém criada. Se, além disso, desejar executá-la agora, selecione Executar no lado direito.

Selecione o histórico de tarefas para assegurar que foi criada corretamente. Depois de executar a tarefa, você deve ver que também foi executada corretamente. Caso contrário, aparecerá um erro.

Esta tarefa criará duas tabelas:

Sample_DBExpansion_Data.DBAnalysisInfo.

Essa tabela vai armazenar dados sobre a própria base de dados. Nos referimos a isso como «metadatos». A informação que armazena pode ser vista na imagem que se segue. A FastFlag indicará a seleção escolhida em 4.a.

DBTable

Sample_DBExpansion_Data.GlobalAnalysisInfo

Essa irá conter a informação relativa às globais na base de dados. Observe que se há um nome de classe associado à global, o veremos aqui junto com seu tamanho. Por último, observe que o campo MetaDataID corresponde ao campo ID da tabela Sample_DBExpansion_Data.DBAnalysisInfo. Isso quer dizer que no momento em que se capturou a informação da base de dados, se capturou seu correspondente de informação global e compartilham esse número de identificação (são as globais da base de dados nesse momento). É uma forma de ver como evoluem no tempo as globais de uma base de dados e a própria base de dados.

GLOBALTABLE

5) Em continuação, a interface de usuário um pouco mais bonita.

Recording_2023-05-23_at_2_03_45_PM_AdobeExpress

Mostra informação sobre a global e a base de dados que aparecem na tabela de uma maneira mais amigável. Há 3 gráficos: um que mostra o histórico dos dados, o segundo que mostra o histórico de tamanhos de uma global escolhida, seja através do menu ou de uma busca, e por último há uma visão geral de todos os tamanhos de globais. Na parte inferior, há uma tabela onde se introduz quantas globais se quer mostrar e as apresenta ordenadas por tamanho. A coluna %Change está realçada em amarelo para uma mudança mínima de tamanho, em verde para uma diminuição de tamanho e em vermelho para um aumento significativo de tamanho.

Você pode encontrar instruções passo a passo sobre como configurá-los aqui.

Se não te interessam os gráficos, continue com a análise de dados aqui.

Docker

Pré-requisitos

Assegure-se que tenha git e Docker desktop instalados.

Instalação

Clone/git pull o repositório em qualquer diretório local

$ git clone https://github.com/rcemper/PR_DataCollection.git
$ docker compose up -d && docker compose logs -f

Inicio do container
Crie o diretório apropriado «/home/irisowner/dev/Unit Tests»
Defina ^UnitTestRoot = «/home/irisowner/dev/»

Para abrir o Terminal IRIS:

$ docker-compose exec iris iris session iris
USER>

ou utilizando WebTerminal.
http://localhost:42773/terminal/

Para acessar ao portal de administração do sistema IRIS
http://localhost:42773/csp/sys/UtilHome.csp

Para acessar a UnitTestPortal
http://localhost:42773/csp/sys/%25UnitTest.Portal.Indices.cls?$NAMESPACE=USUARIO

Discussão (0)1
Entre ou crie uma conta para continuar