São dois SGBDs, ambos gratuitos. O MySQL está disponível sob a GPL (Licença Pública GNU), além de possuir uma licença convencional. Já o PostgreSQL está disponível sob a flexível licença BSD.
O MySQL é o mais utilizado no desenvolvimento de aplicações onde a velocidade é importante (porém isto tem mudado com versões mais recentes do PostgreSQL), enquanto que o PostgreSQL se destaca por ser mais robusto e possuir muito mais recursos que o MySQL.
Matriz de Decisão
| Feature | PostgreSQL | MySQL | |
|---|---|---|---|
| Open Source | Totalmente Open Source | Open source, mas de propriedade da Oracle e oferece versões comerciais | |
| Conformidade ACID* | Total conformidade | Suportado | |
| Suporte a concorrencia | A implementação MVCC suporta múltiplos pedidos sem bloqueios de leitura | Suportado | |
| Segurança | Seguro desde o início com o suporte SSL | SSL suportado em algumas versões | |
| NoSQL/ JSON | Ambos | Apenas JSON | |
| Métodos de Acesso | Suporta todos os padrões | Suporta todos os padrões | |
| Replicação |
Single master to one standby Single master to multiple standbys Bi-Directional replication Hot Standby/Streaming Replication Logical log streaming replication Cascading replication |
Master to master Single master to one standby Single master to multiple standbys Circular replication (A to B to C and back to A) Single master to one standby to one or more standbys
|
|
| Materialized View | Suportado | Não Suportado | |
| Tabelas Temporarias | Suportado | Suportado | |
| Dados geoespaciais | Suportado | Suportado | |
| Sistema de tipo extensível | Suportado | Não Suportado | |
| Implementando em | C | C e C++ |
- ACID(Atomicity, Consistency, Isolation, Durability): (Atomicidade, Consistência, Isolação, Durabilidade) é um conjunto de propriedades das transações de banco de dados. A conformidade ACID garante que nenhum dado é perdido em caso de falha, mesmo quando há várias mudanças feitas durante uma única transação.
- Suporte a concorrencia: MVCC (Multi-Version Concurrency Control) é uma técnica avançada do PostgreSQL que resolve o problema de ambientes multiusuários de banco de dados, os LOCKs (bloqueios) que fazem o usuário ficar esperando. Ao contrário de outros SGBDs que utilizam que utilizam LOCKs para controle de concorrência, o PostgreSQL mantém a consistência dos dados usando um modelo multiversão. Neste modelo, cada transação terá sua versão do banco de dados, estando protegidas de acessar dados inconsistentes que poderiam ser gerados por outras transações. Portanto, o MVCC oferece o isolamento de transações, alem de garantir que leituras nunca aguardarão escritas e vice-versa.
- Uma visão materializada(Materialized View) é um objeto de banco de dados que contém os resultados de uma consulta que pode ser atualizada conforme necessário da tabela base original. Pode ser pensado como um 'cache' para bancos de dados.
- Uma tabela temporária armazena dados não necessários para persistir além da vida da sessão que o cria.
- A principal maneira de diferir de uma Visão Materializada é que o último fornece a capacidade de atualizar periodicamente os dados, resultando em uma melhor eficiência para esse caso de uso.
- Os dados geoespaciais são todos os pontos de dados geográficos que um banco de dados mantém e podem fornecer para a análise. É a informação sobre um objeto físico que pode ser representado por valores numéricos em um sistema de coordenadas geográficas.
Referencia
https://db-engines.com/en/system/MySQL%3BPostgreSQL
https://www.2ndquadrant.com/en/postgresql/postgresql-vs-mysql/
