Ir para o conteúdo principal

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:

PostgreSQL: Downloads

 

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.