O PostgreSQL, um poderoso sistema de gerenciamento de banco de dados relacional de código aberto, teve origem como parte do projeto POSTGRES na Universidade da Califórnia, Berkeley, em 1986. Este projeto de pesquisa se propunha a construir o sistema de gerenciamento de banco de dados mais avançado possível. A evolução do projeto e seu amadurecimento culminaram no renomeamento do sistema para PostgreSQL em 1996, sinalizando o suporte à linguagem SQL. Hoje, o PostgreSQL é famoso por sua robustez, alto desempenho e rica conformidade com padrões, incluindo o padrão SQL.

Destaques do PostgreSQL

Uma das distinções do PostgreSQL é a sua capacidade de lidar com uma variedade de tipos de dados, incluindo tipos de dados numéricos, monetários, de data e hora, geométricos, textuais, binários, além de suporte para dados JSON. Ele também permite que os usuários definam seus próprios tipos de dados.

Outra característica poderosa é a conformidade de nível ACID (Atomicidade, Consistência, Isolamento, Durabilidade). Isto garante que todas as transações são processadas de forma confiável no sistema. A natureza ACID do PostgreSQL o torna altamente adequado para sistemas que exigem integridade de dados, como sistemas bancários e financeiros.

Além disso, o PostgreSQL é extensível. Você pode definir suas próprias funções, operadores e até mesmo escrever módulos de código para expandir a funcionalidade do banco de dados. Ele também oferece várias linguagens procedurais, incluindo PL/pgSQL, PL/Python e PL/Perl.

PL/pgSQL

Aqui está um exemplo de uma função PL/pgSQL que retorna todos os funcionários cujo salário é maior do que um valor específico.

CREATE OR REPLACE FUNCTION funcionarios_com_salario_maior(entrada NUMERIC)
RETURNS TABLE (nome VARCHAR, salario NUMERIC) AS $$
BEGIN
    RETURN QUERY SELECT nome, salario FROM funcionarios WHERE salario > entrada;
END; $$ LANGUAGE plpgsql;

PL/Python

O exemplo a seguir é uma função PL/Python que retorna a string reversa de uma entrada.

CREATE OR REPLACE FUNCTION reverse_string(entrada TEXT)
RETURNS TEXT AS $$
    if entrada is None:
        return None
    else:
        return entrada[::-1]
$$ LANGUAGE plpython3u;

PL/Perl

Aqui está um exemplo de função PL/Perl que calcula o fatorial de um número.

CREATE OR REPLACE FUNCTION fatorial(n INT)
RETURNS INT AS $$
    my $resultado = 1;
    $resultado *= $_ for (1..$n);
    return $resultado;
$$ LANGUAGE plperl;

Essas funções exemplificam a flexibilidade e o poder do PostgreSQL, pois o banco de dados pode ser estendido com várias linguagens de programação, permitindo que você escreva funções e procedimentos que atendam às suas necessidades específicas.

O PostgreSQL não vem com PL/Python ou PL/Perl ativados por padrão. Portanto, para usar essas linguagens, você precisará ativá-las no seu banco de dados PostgreSQL.

Para ativar qualquer linguagem de procedimento, como PL/Python ou PL/Perl, você precisa usar o comando CREATE EXTENSION. Antes disso, certifique-se de que os pacotes relevantes estão instalados em seu sistema. Por exemplo, para PL/Python, o Python deve estar instalado, e para PL/Perl, o Perl deve estar instalado.

Aqui estão os passos para ativar PL/Python e PL/Perl:

PL/Python:

  1. Instale o Python em seu sistema, se ainda não o tiver feito.
  2. Conecte-se ao banco de dados PostgreSQL e execute o seguinte comando:
CREATE EXTENSION plpython3u;

PL/Perl:

  1. Instale o Perl em seu sistema, se ainda não o tiver feito.
  2. Conecte-se ao banco de dados PostgreSQL e execute o seguinte comando:
CREATE EXTENSION plperl;

Isso irá habilitar a extensão PL/Python ou PL/Perl para o banco de dados atual. Você precisará fazer isso para cada banco de dados em que desejar usar essas linguagens. Além disso, observe que apenas superusuários podem executar o comando CREATE EXTENSION.

No entanto, é importante notar que o uso de linguagens não seguras, como PL/Python e PL/Perl, podem apresentar riscos de segurança, pois essas linguagens têm a capacidade de acessar o sistema de arquivos e o shell. Portanto, use-as com cuidado.

Comparando PostgreSQL com outros SGBDs

Ao se comparar o PostgreSQL com outros sistemas de gerenciamento de banco de dados, é possível ver o quão poderoso e flexível ele é.

O Oracle é um dos sistemas de gerenciamento de banco de dados mais conhecidos e é semelhante ao PostgreSQL em termos de capacidade de manipular grandes quantidades de dados e suporte para linguagem procedural SQL. Ambos são altamente consistentes e robustos em termos de transações e integridade de dados. No entanto, o PostgreSQL leva vantagem em termos de licenciamento, já que é de código aberto e gratuito, enquanto o Oracle é um produto comercial.

Em relação ao SQL Server da Microsoft, o PostgreSQL demonstra sua força em termos de portabilidade. Enquanto o SQL Server é restrito principalmente a sistemas Windows, o PostgreSQL é multiplataforma, podendo ser executado em vários sistemas operacionais. Além disso, embora o SQL Server ofereça uma interface de usuário gráfica rica, o PostgreSQL oferece flexibilidade na manipulação de dados por meio de várias interfaces, incluindo linha de comando e GUI.

No confronto com o MySQL, ambos são sistemas de código aberto, mas o PostgreSQL é mais poderoso em termos de funcionalidades. O PostgreSQL se destaca ao suportar recursos avançados como herança de tabela e funções definidas pelo usuário, ao passo que o MySQL se destaca pela simplicidade e velocidade, o que o torna popular para aplicações web e blogs.

PostgreSQL em Grandes Instituições

O PostgreSQL é adotado por uma variedade de organizações e instituições globais devido à sua confiabilidade e recursos avançados. Por exemplo:

  • Apple utiliza o PostgreSQL para diversos serviços, incluindo o Apple Maps.
  • Fujitsu fornece suporte e serviços PostgreSQL para seus clientes.
  • Federal Aviation Administration (FAA) usa o PostgreSQL para o sistema de rastreamento de voos.
  • Cisco Systems usa o PostgreSQL para seu serviço WebEx.

Conclusão

O PostgreSQL, com sua rica história de desenvolvimento e suas características únicas, tem se destacado como um competidor formidável no mundo dos SGBDs. Suas vantagens, como a forte conformidade com os padrões SQL, recursos avançados, e a capacidade de personalização, tornam-no uma escolha atraente para uma variedade de organizações, desde startups até grandes corporações e instituições governamentais.

Sobre o autor

Pós graduado em Gestão de Projetos em Tecnologia da Informação pela UNIASSELVI.
Esposo e Pai, curto atividades ao ar livre (Bike, SUP, Natação, Caminhar, Brincar no campo)

Atua com Banco de Dados Oracle desde de 2007. Atualmente é DBA Senior na FLUIDATA Serviços em Banco de dados (www.fluidata.com.br)

Principais atividade Banco de dados:

Implementação, migração, gerenciamento e suporte a produtos Oracle (8i, 9i, 10g, 11g, 12c, 18c, 19c RAC), multiplataforma;
Implementação, migração, gerenciamento e suporte a produtos Microsoft SQL Server (2008 - 2019);
Implementação, migração, gerenciamento e suporte a produtos PostgreSQL (9.3 - 14);
Monitoramento de ambientes 24×7;
Backup e Recovery;
Performance e Tuning;
Alta disponibilidade (HA);
EM database/grid/cloud control;
Conversão de databases;
Standby database / Oracle Data Guard;

Certificações:

Oracle Cloud Infrastructure 2019 Certified Architect AssociateOracle Cloud Infrastructure 2019 Certified Architect Associate
Oracle Database 12c Administrator Certified ProfessionalOracle Database 12c Administrator Certified Professional
Exadata Database Machine Models X2-2 and X2-8 Technology Support SpecialistExadata Database Machine Models X2-2 and X2-8 Technology Support Specialist
Oracle Database 11g Support SpecialistOracle Database 11g Support Specialist
OCP 11g - Oracle Certified Professional AdministratorOCP 11g - Oracle Certified Professional Administrator
OPN Certified Specialist 10g - PartnerNetwork Certified SpecialistOPN Certified Specialist 10g - PartnerNetwork Certified Specialist
Oracle Database 10g Real Applications Clusters AdministratorCertified ExpertOracle Database 10g Real Applications Clusters AdministratorCertified Expert
Oracle Database 10g: Managing Oracle on Linux Certified ExpertOracle Database 10g: Managing Oracle on Linux Certified Expert
OCP 10g - Oracle Certified Professional AdministratorOCP 10g - Oracle Certified Professional Administrator

Principais atividades DEVOPS:

PHP
ASP.net
C#
Docker
Golang
C++
Delphi
Python
HTML5
JavaScript

Você também pode gostar: