Ir para o conteúdo principal

Implementação do PostgreSQL

Data de elaboração 08/06/21
Responsável pelo estudo
  1. João Cícero Romão Gomes de Oliveira

  2. Raaby Liandry de Souza Teixeira

  3. Henrique dos Santos Oliveira
Equipe do estudo Guardiões da Galáxia
Alvo Todos os sistemas sob a responsablidade do time Guardiões da Galáxia
Origem

Implementação: 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.

Objetivo Trocar o banco de dados utilizado de SQL SERVER para PostgreSQL
Observações Foi necessário fazer todo o estudo de como fazer a migração de dados entre bancos



1. Introdução

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á.

2. Desenvolvimento

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)

2.1 Resultado da Pesquisa

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.

2.2 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.3 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.

3. 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.

4. 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.