Descrição |
|||||||
---|---|---|---|---|---|---|---|
Data de elaboração | 21/07/2021 |
||||||
Responsável pelo estudo | Rafael Passos dos Santos (Assessor) |
||||||
Equipe do estudo |
Gustavo Felix Gomes (Assessor); Rafael Passos dos Santos (Assessor); André Honório de Andrade Silva (Tecnico); Emanuel Rufino Alcantara de Lima (Analista); Euriane Nogueira (Product Owner); 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. |
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.
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.
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á.
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.
Instalar o pacote do PostGreSQL no sistema a ser utilizado (1 pontos)
Mudar connectionString no gitlab dos bancos (2 pontos );
Realizar a “compara” dos tipos de dados entre bancos (3 pontos)
Para atender a necessidade precisamos realizar os seguintes passos especificados pela organização do PostgreSql, endereçadas no link abaixo:
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.
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
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.
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:
Tipos de dados (Transact-SQL) - SQL Server | Microsoft Docs
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.
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.
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.