Vingadores - Implementação do PostgreSQL nos sistemas que o time Vingadores mantém
Realizar um estudo de caso acerca da complexidade da alteração do banco de dados para o SGBD PostGreSQL nos sistemas que o time Vingadores mantém
OBJETIVO
Avaliar a possibilidade de substituir o banco atual (SQLServer da Microsoft), conforme a User Story: “Eu como vingadores, 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 78 do time Vingadores.
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 Vingadores 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:
André Honório de Andrade da Silva (DEV Team)
Gustavo Felix Gomes (DEV Team)
Rafael Passos dos Santos (DEV Team)
Emanuel Rufino Alcantara de Lima (Dev Team)
Lucas de Souza e Sousa (Estagiário Dev Team)
Gezinéia Paula da Costa (Estagiária Product Owner)
Lucas Tavares Viana de Souza (Estagiário Scrum Master)
Gerente de Desenvolvimento:
Janderson de Castro Thomaz
Product Owner:
Euriane Nogueira Frota (Product Owner)
Scrum Master:
Moisés Santos Rodrigues (Scrum Master)
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 dados Atualizaçãosistemas Cadastral.do time.
2. ADAPTAÇÃO NO CÓDIGO
O outro procedimento a ser realizado, foié a substituição dos lugares onde utilizam a connection string, que agoradeveram foiser adaptadaadaptados 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, foiserá apontado um conflito em dados do tipo “DateTime”, que foiserá necessário modificar todos para .HasColumnType(“timestampz”). Essa diferença de dados foiserá oa únicoprimeira identificadoa ser identificada no sistema “atualização cadastral”,sistemas, 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 dados Atualização Cadastral.sistemas.
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 docomo exemplo no banco ‘Atualização Cadastral’ utilizando as migrations no PostgreSQL.
As configurações especificadas ate o momento, servem para quase todos os sistemas do time vingadores, sendo eles
- VisaOn
- Portal do servidor
- Portal do cidadão
- Comunique-se
- Alpha
- Formulário dinâmico
- API push
com exceção do SID e suas API's, pois dentro dele a procedures,
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.