image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Olival Neto
Olival Neto30/09/2023 11:33
Compartilhe

MySQL ou PostgreSQL? Qual Banco de Dados Relacional Escolher?

    Talvez, você já tenha se perguntado isso e até hoje não saiba a resposta. Mas, para chegar neste conteúdo, eu preciso te dizer que: eu tive que estudar os dois. Mas, talvez, você não precise.

    Por isso, vou começar falando sobre banco de dados relacionais, falando sobre os dos mais utilizados e conhecidos no mercado de tecnologia, que são: MySQL e PostgreSQL.

    Relacional é algo que remete a Relacionamentos. Se fizermos uma rápida analogia sobre o mundo real. Podemos pensar em três pessoas, que darei o nome de Pedro, Marcos e Clara.

    Pedro gosta de Clara, mas Clara não gosta de Pedro. Logo, não temos relacionamento. Mas, aqui temos: Pedro gosta de Clara e ela gosta de Pedro. Neste caso, temos o relacionamento 1 para 1, que remete a cardinalidade de banco de dados, onde representamos através de números, letras, os relacionamentos entre as tabelas.

    Pedro é amigo de Clara e amigo de Marcos. Aqui, temos um relacionamento de 1 para N, onde 1 é o Pedro e N os seus amigos. Se esse grau de amizade for recíproco, temos que Clara é amiga de Pedro, e Marcos também, e Marcos é amigo de Clara, assim como, Clara é amiga de Marcos.

    Quando temos um relacionamento indo e voltando, podemos ter o relacionamento N para M, ou seja, muito para muitos, e normalmente, isso vira uma nova tabela.

    Tabelas são dados agrupados em linhas e colunas, que possuem um código de identificação, seguem um padrão de criação, exclusão, edição e apresentação.

    Mas, até aqui, todo banco de dados relacional tem isso. O problema surge quando vemos essas tecnologias nas vagas de trabalho, e pensamos... bem... essa vaga pede MySQL, mas só sei PostgreSQL, devo me candidatar, ou ainda, essa vaga só pede PostgreSQL, mas só tenho MySQL, o que fazer?

    Se é banco relacional, e você já aprendeu um, então, o normal é que o outro seja mas fácil de aprender. Mas, a nossa mente pode pirar, achando que vamos ter que aprender um mundo de informação, novamente, e assim, acabamos adiando os estudos de algo que poderia nos dar mais chances de ingressar ao mercado de trabalho, simplesmente, por trava mental.

    Mas, a partir de agora, a sua mente vai ter um estimulo novo, para acelerar os estudos e aprender os dois, que hoje, diante do mercado de trabalho, é o que vejo como melhor opção, para se manter amplos, genérico, com mais chances.

    image

    Aqui, separei 3 tópicos que podem te fazer repensar neste assunto. Veja abaixo:

    1. Recursos e Extensibilidade:

    O MySQL é conhecido por ser mais simples de usar e é frequentemente escolhido para aplicativos da web e projetos onde a simplicidade é uma prioridade. Ele oferece uma ampla gama de recursos, mas pode ser menos extensível em comparação com o PostgreSQL.

    O PostgreSQL é conhecido por sua extensibilidade e suporte a recursos avançados. Ele é uma escolha popular para aplicativos de dados complexos, como sistemas de informações geográficas, data warehousing e análise avançada. O PostgreSQL oferece suporte a tipos de dados personalizados, funções definidas pelo usuário e extensões.

    2. SQL Compliance:

    O MySQL segue os padrões SQL, mas às vezes pode ter algumas variações e extensões proprietárias. É conhecido por ser mais flexível em relação ao cumprimento estrito dos padrões SQL.

    O PostgreSQL é conhecido por sua estrita aderência aos padrões SQL e é frequentemente considerado o banco de dados mais compatível com o SQL entre os sistemas de código aberto.

    3. Desempenho:

    O desempenho do MySQL é geralmente muito bom, especialmente em cargas de trabalho de leitura intensiva. Ele é amplamente utilizado em aplicativos da web devido ao seu desempenho rápido em consultas simples.

    O PostgreSQL é conhecido por seu desempenho robusto, especialmente em cargas de trabalho complexas que envolvem consultas complexas e transações. Ele tem um otimizador de consulta sofisticado.

    image

    Mas, mesmo diante das pesquisas, como o gráfico acima, não podemos nos prender apenas ao que falei acima. Por isso, vamos avaliar mais algumas vantagens e desvantagens, que no caso, separei 4 delas, entre esses dois bancos relacionais, veja aqui:

    1. Replicação:

    O MySQL oferece suporte à replicação mestre-escravo e mestre-mestre, tornando-o adequado para cargas de trabalho de leitura intensiva e alta disponibilidade. No entanto, a replicação pode ser complexa de configurar e gerenciar.

    O PostgreSQL também suporta replicação mestre-escravo e mestre-mestre, mas sua configuração pode ser mais fácil e flexível. Além disso, o PostgreSQL oferece opções avançadas de replicação, como replicação síncrona e lógica.

    2. Índices e Pesquisas Avançadas:

    O MySQL oferece suporte a índices espaciais para consultas geoespaciais, mas suas capacidades de pesquisa de texto completo podem ser limitadas em comparação com o PostgreSQL.

    O PostgreSQL é conhecido por suas capacidades avançadas de pesquisa de texto completo, permitindo consultas complexas e até mesmo pesquisa de texto em várias línguas. Além disso, possui suporte nativo a índices espaciais e recursos GIS avançados.

    3. Transações e Controle de Concorrência:

    O MySQL oferece suporte a transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade) e controle de concorrência, mas alguns mecanismos de armazenamento, como o MyISAM, não suportam transações. Isso pode levar a comportamentos inesperados em alguns casos.

    O PostgreSQL é conhecido por sua robusta implementação de transações ACID e controle de concorrência. Ele suporta transações em todos os mecanismos de armazenamento e é altamente confiável em ambientes de produção.

    4. Escalabilidade:

    O MySQL oferece escalabilidade vertical (adicionando mais recursos a um servidor único) e horizontal (usando replicação e particionamento), mas a escalabilidade horizontal pode ser mais complexa de configurar e manter.

    O PostgreSQL também oferece escalabilidade vertical e horizontal. Além disso, sua arquitetura e suporte a replicação avançada tornam-no uma escolha sólida para cargas de trabalho escaláveis e de alto desempenho.

    image

    E para trazermos dados atualizados, veja acima, como as pessoas andam pesquisando pelos termos: mysql e posgresql, no google. Apesar da média do posgresql parecer menor, em vermelho, do que o mysql, em azul, temos que há um grande indicativo de pesquisas.

    Logo, se os dois são requisitados, vale a pena se dedicar aos dois, não ao mesmo tempo. Afinal, melhor aprender bem um, e depois expandir, do que mesclar tudo e fazer uma bagunça na mente.

    Leve o tempo que precisar, para estudar de acordo com o seu progresso. Afinal, a minha visão é que ter esses dois bancos na sua stack e um banco não relacional, que particularmente, vejo mais requisitos de mongodb, seria interessante.

    Espero que o artigo seja útil e de valor para você. Abaixo deixo as fontes de pesquisa:

    PostgreSQL vs MySQL – Difference Between Them: https://www.guru99.com/postgresql-vs-mysql-difference.html

    Google Trends: https://trends.google.com.br/trends/explore?date=today%203-m&geo=BR&q=mysql,postgresql&hl=pt

    Aulas da Dio, Cursos: Conceitos e Melhores Práticas com Banco de Dados PostgreSQL

    Compartilhe
    Comentários (2)
    Olival Neto
    Olival Neto - 01/10/2023 09:59

    Salve, Gustavo. Obrigado pela contribuição. Já consegui fazer o mapeamento orm de classes java, para tabelas mysql, mas usando a dependência spring data jpa, do spring boot. Se for nesse sentido, o mysql também faz. Um abraço

    Gustavo Lemos
    Gustavo Lemos - 30/09/2023 17:13

    Tem mais um detalhe, o postgresql tem suporte à orientação a objetos ou seja ele é capaz de mapear classes em tabelas. Se não me engano o MySQL não tem essa funcionalidade, por favor me corrija se eu estiver errado. Parabéns pelo artigo.