Implementação do PostgreSQL nos sistemas que o time Vingadores mantém
Data de elaboração | 21/07/21 |
---|---|
Responsável pelo estudo |
|
Equipe do estudo |
|
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:
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.
Nenhum comentário