Guardiões - Implementação do PostgreSQL
Realizar um estudo acerca da implementação do SGBD PostGreSQL nos sistemas que o time Guardiões mantém
OBJETIVO
Avaliar a possibilidade de substituir o banco atual (SQLServer da Microsoft), conforme a User Story: “Eu como guardiões, preciso realizar um estudo de caso, da complexidade de alterar o banco de dados de cada sistema que o time mantém" presente na Sprint número 79 do time Guardiões.
JUSTIFICATIVA
Tendo em vista que o PostGreSQL é um banco de dados e SGBD relacional totalmente OpenSource, a SETIC detém o interesse em utilizar tais tecnologias para redução de custos a fim de colaborar na economia do Governo do Estado e incentivar a cultura OpenSource. Deste modo, a demanda para estudo de substituição de tecnologia foi realizada para avaliar os impactos que a nova tecnologia possivelmente trará.
RESULTADOS ESPERADOS
Implementar o PostGreSQL em um sistema que o Guardiões mantém e verificar se as funções que são realizadas no SQLServer é possível também no PostGreSQL, como por exemplo, as Migrations.
1 - Instalar o pacote do PostGreSQL no sistema a ser utilizado (1 pontos)
2- Mudar connectionString no gitlab dos bancos (2 pontos );
3- Realizar a “compara” dos tipos de dados entre bancos (3 pontos)
ENVOLVIDOS:
- João Cícero Romão Gomes de Oliveira
- Raaby Liandry de Souza Teixeira
- Henrique Oliveira
GLOSSÁRIO:
PostGreSql- Banco de Dados relacional openSource com mais de 30 anos de desenvolvimento ativo ;
Migrations - A migração de dados é o processo de selecionar, preparar, extrair e transformar dados e transferi-los permanentemente de um sistema de armazenamento de computador para outro;
OpenSource - Código aberto é um modelo de desenvolvimento criado em 1998, que promove o licenciamento livre para o design ou esquematização de um produto, e a redistribuição universal desses, com a possibilidade, examinação ou modificação do produto.
1. INSTALAÇÃO
Para atender a necessidade precisamos realizar os seguintes passos especificados pela organização do PostgreSql, endereçadas no link abaixo:
Figura 1 - Escolha da plataforma para o .exe ser baixado e instalado..
Escolher a plataforma na qual será instalado o .exe.
Para rodar localmente é necessário realizar o download do driver Npgsql que será exibido ao final da instalação.
Figura 2 - Tela de instalação do plugin Npgsql v3.2.6-3 que deve ser instalado.
Logo após, é necessário realizar a Instalação do pacote para o provedor do banco de dados Postgresql, disponibilizado nos Nuggets do Visual Studio. O detalhamento deste passo é especificado também pelo PostgreSql no link abaixo:
Npgsql Entity Framework Core Provider | Npgsql Documentation
Figura 3 - Alteração no tipo de dado nas migrations da Atualização Cadastral.
2. ADAPTAÇÃO NO CÓDIGO
O outro procedimento realizado, foi a substituição dos lugares onde utilizam a connection string, que agora foi adaptada para receber o PostgreSql:
ConnectionStrings "Host=localhost;Port=5432;Database=dev.atualizacaocadastral.sistemas.ro.gov.br;Username=postgres;Password=senha!",
Após a alteração para a nova connectionstring, e prontos para rodar as Migrations, foi apontado um conflito em dados do tipo “DateTime”, que foi necessário modificar todos para .HasColumnType(“timestampz”). Essa diferença de dados foi o único identificado no sistema “atualização cadastral”, podendo ser encontrado mais diferenças durante a alteração de banco em outros tipos de dados.
Figura 4 - Alteração no tipo de dado nas migrations da Atualização Cadastral.
A especificação dos dados aceitos no SQL Server pode ser encontrada na documentação da Microsoft, em que salienta a classificação dos dados e os tipos dos mesmos. Conforme o link abaixo:
Tipos de dados (Transact-SQL) - SQL Server | Microsoft Docs
Os tipos de dados do PostgreSQL também são encontrados no link abaixo, conforme a organização mantenedora:
PostgreSQL: Documentation: 9.6: Data Types
Levando em consideração o conhecimento de ambas as documentações disponibilizadas pelas organizações mantenedoras dos bancos utilizados, é possível realizar o “compara” dos tipos de dados entre bancos quando houver conflitos durante a alteração de banco nos sistemas.
Figura 5 - Tabelas geradas do ‘Atualização Cadastral’ utilizando as migrations no PostgreSQL.
CONCLUSÃO
Realizada a análise e os testes com o banco PostgreSQL no sistema Atualização Cadastral, foi possível prever e implementar no ambiente local do sistema o PostgreSQL. Sendo o passo-a-passo especificado nos tópicos acima. Foram identificados algumas possíveis alterações em tipos de dados, instalação de pacotes do PostgreSql nos sistemas, alteração do banco em código e alteração de connectionString nos ambientes. Estimando-se, um total de 6 pontos para a alteração em cada sistema proposto.
REFERÊNCIAS
[1] MICROSOFT. DATA TYPES. 2019. Disponível em: Tipos de dados (Transact-SQL) - SQL Server | Microsoft Docs. Acesso em: 31 mai. 2021.
[2] POSTGRESQL. TIPOS DE DADOS (TRANSACT-SQL). 2020. Disponível em: PostgreSQL: Documentation: 9.6: Data Types. Acesso em: 31 mai. 2021.
[3] POSTGRESQL. Npgsql Entity Framework Core Provider. 2019. Disponível em: Npgsql Entity Framework Core Provider | Npgsql Documentation. Acesso em: 31 mai. 2021.
[4] POSTGRESQL. PostgreSQL Downloads. 2019. Disponível em: PostgreSQL: Documentation: 9.6: Data Types. Acesso em: 31 mai. 2021.