Ir para o conteúdo principal

Implementação do PostgreSQL nos sistemas que o time Vingadores mantém

Data de elaboração 21/07/21
Responsável pelo estudo


  1. Rafael Passos dos Santos (Assessor)
Equipe do estudo
  1. Gustavo Felix Gomes (Assessor)
  2. Rafael Passos dos Santos (Assessor)
  3. André Honório de Andrade Silva (Tecnico)
  4. Emanuel Rufino Alcantara de Lima (Analista)
  5. Euriane Nogueira (Product Owner)
  6. Lucas de sousa e souza (Estagiario)
Alvo PostgreSQL 
Origem

Implementação do 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.
Documentação correlata
Observações Realizando essa análise de complexidade na alteração para o banco PostgreSQL nos sistemas do time Vingadores, é possível prever e implementar no ambiente local dos 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, e 8 pro SID e suas API's devido suas procedures.



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

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

3. Desenvolvimento - Implementação do PostgreSQL nos sistemas que o time Vingadores mantém

Para este, espera-se 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)

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

3.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 dos sistemas do time.

3.3 ADAPTAÇÃO NO CÓDIGO

O outro procedimento a ser realizado, é a substituição dos lugares onde utilizam a connection string, que deveram ser adaptados 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, será apontado um conflito em dados do tipo “DateTime”, que será necessário modificar todos para .HasColumnType(“timestampz”). Essa diferença de dados será a primeira a ser identificada no 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 dos 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 como 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 sistema SID e suas API's, pois em seu banco de dados existe procedures que trabalham com datas. O PostgreSQL trabalha com uma tipagem diferente para datas o que pode ocasionar problemas ao tentar executar essas procedures em um novo Banco PostgreSQL, sendo necessário a reescritas dessas procedures, algo que o time Vingadores pode ter dificuldade por não temos um conhecimento muito profundo do sistema SID e suas API's, diante disso pode ser necessário o auxilio do Baymax e Defensores para reescrita dessas procedures.

4. Conclusão

Realizando essa análise de complexidade na alteração para o banco PostgreSQL nos sistemas do time Vingadores, é possível prever e implementar no ambiente local dos 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, e 8 pro SID e suas API's devido suas procedures.

 
5. Referências (opcional)

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