[ETP] Integração .Net + PostgreSQL
ESTUDO TÉCNICO PRELIMINAR - ETP
Devido a complexidade de adoções de licenças de ferramentas pelo Governo, a solução dos profissionais de TI é buscar ferramentas que sejam boas e gratuitas para utilizações robustas, devido a isso o uso do banco de dados do Postgress é recomendado devido suas praticidades. O PostgreSQL é um banco de dados de código aberto mais avançado, oferece muitas vantagens para a SETIC do que outros sistemas de banco de dados. Ele também está disponível para quase todos os sistemas operacionais com a versão estável mais recente. Por fim a intenção deste estudo é integrar esse banco de dados junto a tecnologia de desenvolvimento do C#/.NET.
2 - Complexidade de cada funcionalidade
Basicamente a integração do ..NET com o PostgreSQL é intermediada pelo EF Core (Entity Framework Core), de acordo com o site oficial da microsoft (https://docs.microsoft.com/pt-br/ef/core/), o conceito de Entity Framework Core é disponibilizado a seguir:
O EF (Entity Framework) Core é uma versão leve, extensível, de software livre e multiplataforma da popular tecnologia de acesso a dados do Entity Framework.
EF Core pode servir como um mapeador relacional de objeto (O/RM), que:
- Permite que os desenvolvedores do .NET trabalhem com um banco de dados usando objetos .NET.
- Elimina a necessidade da maior parte do código de acesso a dados que normalmente precisa ser gravado.
O EF Core é compatível com vários mecanismos de banco de dados, consulte detalhes em Provedores de Banco de Dados.
Fonte: Microsoft
Para esta integração os provedores de banco são pontes para outros tipos de bancos dados. A microsoft também aborda o conceito de provedores para o banco de dados, esses provedores fornecem conectividade com a tecnologia .NET Core para sua integração.
O próprio site de documentação do PostgreSQL aborda como é feita a configuração desses provedores, vejamos:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.3" />
</ItemGroup>
</Project>
Fonte: Npgsql
Após a instalação e configuração do provedor que dá acesso é necessário a criação do contexto que representará o modelo de negócio do projeto por meio da classes, reparemos:
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace ConsoleApp.PostgreSQL
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseNpgsql("Host=my_host;Database=my_db;Username=my_user;Password=my_pw");
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
Fonte: Npgsql
Inclusive para o ambiente da SETIC, podemos citar até mesmo uma configuração específica de aplicativos ASP.NET Core, exemplo:
public void ConfigureServices(IServiceCollection services)
{
// Other DI initializations
services.AddDbContext<BloggingContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("BloggingContext")));
}
Fonte: Npgsql
3 - Possíveis problemas
Não existem problemas com relação a tecnologia propriamente dita, mas há cenários em que talvez um novo ambiente com esse novo banco de dados poderá promover algumas dificuldades, o ponto inicial é mão de obra empregada na SETIC, a maioria dos colaboradores tem bastante familiaridade somente com o banco de dados SQL Server, o que poderá demandar um treinamento específico ou algo relacionado. Outro ponto crucial é que a infraestrutura para suportar esse novo banco de dados tem uma configuração específica, mas a boa notícia é que o time de banco de dados já disponibiliza fácil acesso a esse banco para o desenvolvedores.
4 - Valor agregado
A utilização de um banco de dados cuja licença seja livre é de suma importância para a SETIC, pois evita obstáculos burocráticos com relação a licitações e aquisições, ao mesmo tempo é capaz de prover economia aos cofres públicos. A licença do PostgreSQL permite que os desenvolvedores operem um ou mais bancos de dados sem custo de licenciamento em seus sistemas. Devemos considerar também que a equipe principal do PostgreSQL também lança atualizações frequentes que aprimoram muito os recursos do banco de dados.
5 - Conclusão do estudo
O presente ESTUDO TÉCNICO PRELIMINAR, elaborado pelos integrantes TÉCNICOS do time TITÃS, considerando a análise dos desafios técnicos envolvidos e citados, conclui pela VIABILIDADE DADE IMPLEMENTAÇMIGRAÇÃO DADO NOTIFICAÇÃBANCO SQL SERVER PARA O POSTGRESQL DE MODO CRITERIOSO, uma vez que foram considerados os potenciais benefícios em termos de eficiência e também os problemas envolvidos, principalmente potenciais problemas de desempenho da aplicação.envolvidos. Em complemento, os contratempos identificados são administráveis, pelo que RECOMENDAMOS o prosseguimento da demanda. Ressalva-se que o ideal é que novos projetos comecem a periodicidadeoperar esse tipo de enviobanco dosde e-mailsdados, seja no máximo diária, para esta atividade recomenda-seevitando a construçalocação de um Job que faça mão enviode noobra períodoem desejado.migração de projetos legados.