PostgreSQL: primeiros passos para baixar e usar esse SGBD!

Dentro do ecossistema do SQL, existem diversas ferramentas que servem para gerenciar um banco de dados. Dentre elas, o PostgreSQL é um dos mais conhecidos pelo mercado de trabalho, com ele facilmente criamos tabelas, relacionamentos e procedimentos automatizados.

Por possuir muitas funcionalidades, o PostgreSQL é um grande desafio para pessoas desenvolvedoras que estão iniciando o estudo sobre ele. Além da sua instalação que requer o mínimo de conhecimento em terminais, sua interface gráfica pode possuir elementos abstratos no começo.

De qualquer modo, não precisa ficar desanimado, neste artigo abordaremos todos os aspectos, instalação e o uso prático do PostgreSQL, então continue com a gente para aprender mais sobre esse incrível software

O que é o PostgreSQL?

Logo do PostgreSQL

PostgreSQL é um sistema de gerenciamento de banco de dados (SGBD) de código aberto que possui mais de 30 anos de desenvolvimento contínuo. Seu nome original era Postgres, mas acabou mudando de nome para refletir o seu suporte à linguagem SQL.

Além disso, é possível executá-lo tanto no Windows, Linux e MacOS, sua arquitetura suporta diversos usuários em tempo real e não sofre de problemas com a concorrência de informações.

Quais as principais aplicações do PostgreSQL? Para que serve?

Muitos dos seus recursos foram criados para ajudar a pessoa desenvolvedora de software e a pessoa administradora de banco de dados, por essa razão é possível customizar as variáveis e funções banco, garantir que os ambientes de teste e produção não estão com falhas e até mesmo conseguimos executar algumas linguagens de programação dentro do PostgreSQL.

Além de tudo isso, possui as seguintes vantagens:

  • Compatibilidade com a integridade de dados: suporta todos os tipos de dados modernos;
  • Suporte a várias funcionalidades do SQL: na sua versão 15 tem a conformidade de 170 das 179 funcionalidades obrigatórias do SQL 2016;
  • Muito customizável: como já comentamos, se você quiser realizar algum tipo de customização no PostgreSQL, é realmente bem fácil;
  • Segurança: por ser uma sistema de código aberto, recebe diversos tipos de contribuições que agregam na sua segurança.

Quais as limitações do PostgreSQL?

Tem como principal limitação a sua velocidade, já que comparável a outros sistemas de gerenciamento de banco de dados é inferior no poderio de processamento. A causa para isso é o leque de compatibilidade que o PostgreSQL adota, outros programas acabam se preocupando mais na performance do que na compatibilidade.

Ademais, não possui uma documentação oficial em outras línguas fora o inglês, não é tão utilizado por grandes empresas e é uma ferramenta que requer um nível intermediário de conhecimento com programação.

Conheça 8 conceitos importantes sobre PostgreSQL!

Veja alguns dos conceitos mais importantes no aprendizado do PostgreSQL.

1. Tipos de dados

O PostgreSQL por padrão oferece uma lista com vários tipos de dados, também é possível criar o seu próprio tipo de dado customizado utilizando o comando CREATE TYPE.

A lista inclui:

  • Tipo de caractere;
  • Tipo numérico;
  • Tipo de data e tempo;
  • XML;
  • JSON;
  • Tipo booleano;
  • Bits;
  • Tipo de dado binário;
  • Tipo de dado de Rede;
  • Arrays;
  • Tipo de dado customizável;
  • Tipo de dado único (UUID).

2. Índices

O índice é uma ferramenta interna que aumenta a velocidade de busca de determinados itens e determinadas tabelas. A criação deste índice é feita através do comando CREATE INDEX e o PostgreSQL atualmente possui os seguintes mecanismos de índices:

  • B-tree;
  • Hash;
  • GiST;
  • SP-GiST;
  • GIN.

3. Transações

Transações são operações de mudança de informações em um banco de dados. Quando criamos, editamos ou excluímos algum valor de uma tabela, estamos criando transações para esse sistema.

As transações podem ser realizadas manualmente por uma pessoa, automaticamente pelo banco de dados ou até por um sistema que esteja integrado. Essas operações no PostgreSQL devem seguir as orientações do acrônimo ACID que significa: 

  • Atomicidade (Atomicity): garante que as transações deram certo, se não deve ocorrer rollback;
  • Consistência (Consistency): Ggrante que os dados foram alterados corretamente através da transação;
  • Isolação (Isolation): as operações devem ser realizadas de forma isolada de cada uma;
  • Durabilidade (Durability): o resultado da operação deve persistir caso aja alguma falha no banco de dados.

4. Consultas complexas

No PostgreSQL podemos ligar com consultas complexas usando a expressão WITH. Essa declaração é referenciada normalmente como CTE (Expressões de Tabela Comuns) e significa que estamos criando uma tabela temporária para melhorar a performance de uma consulta muito grande.

5. Chaves estrangeiras (foreign keys)

Chaves estrangeiras também estão presentes no PostgreSQL. Com ela é possível criar um relacionamento com uma chave primária de outra tabela.

No exemplo abaixo, temos a tabela usuarios que possui o campo id que seria sua chave primária e o codigo_pais que é a chave estrangeira que está ligada com o campo codigo que está presente na tabela paises.

Tabela mostrando duas colunas: usuarios e paises

Essa forma de relacionamento é um dos princípios básicos do banco de dados relacional e aqui simplesmente estamos dizendo que cada usuário do nosso banco vai possuir um identificador de um país atrelado a ele.

6. Stored procedures (Procedimentos armazenados)

As stored procedures ou apenas procedures são um mecanismo de armazenamento de comandos SQL para uso futuro, é possível guardar um ou mais comandos dentro de uma procedure.

Presente em várias linguagens SQL, não poderia ficar de fora do PostgreSQL, com o armazenamento de alguns comandos, é possível executar rotinas e operações de maneira mais facilitada. Sua criação é feita através do comando CREATE PROCEDURE.

7. Functions (Funções)

Uma função tem o objetivo similar a uma stored procedure, ajuda a guarda uma sequência ilimitada de operações SQL, sua única diferença é que ela é utilizada para retornar algum tipo de valor. Sua expressão é CREATE FUNCTION.

8. Triggers (Gatilhos)

A trigger tem similaridade com a ideia de callback, quando uma operação no banco de dados é realizada, uma trigger pode ser acionada e uma ou mais operações podem ser feitas também. 

Os dois principais triggers são:

  • Antes de realizar uma operação de INSERT, UPDATE ou DELETE;
  • Depois de realizar uma operação de INSERT, UPDATE ou DELETE.

7 técnicas que são usadas no PostgreSQL com bancos de dados!

Aqui estão as principais técnicas que o PostgreSQL utiliza para melhorar a experiência do usuário.

1. Replicação de dados

A replicação de dados no PostgreSQL pode ser feita a partir de dois bancos de dados, um no qual seria o banco primário e o segundo que seria o banco de standby, que fica à espera de informações. Em outros casos também é possível realizar o procedimento em cascata, onde o banco em standby também replica os valores para outros bancos.

2. Particionamento

No PostgreSQL conseguimos particionar as nossas tabelas, dessa maneira aumentamos a performance de algumas operações e até conseguimos deixar a estruturação mais limpa.

O particionamento é mais recomendável em tabelas grandes, já que o tempo de carregamento de dados é um dos principais vilões de velocidade na hora de executar os procedimentos no banco. A partir disso, tabelas menores tendem a gastar menos memória e podem resolver problemas de performance consideravelmente.

3. Auditoria

A auditoria das informações que são armazenadas em um banco de dados é uma tarefa muito importante, para isso o PostgreSQL conta com sua própria extensão chamada pgAudit para auxiliar nesse trabalho.

Por padrão, o PostgreSQL possui suas próprias ferramentas de log em tempo real, no entanto, em casos mais específicos, essas informações não são tão úteis. Por causa disso, o pgAudit foi criado para recolher e identificar todos os dados armazenados.

4. Otimização de desempenho

A otimização de um banco de dados do PostgreSQL pode ser feita de diversas maneiras: tanto por hardware, mudança de configuração e otimização de query. De qualquer maneira, o entendimento dessa questão é único para cada caso.

Conseguimos visualizar os processos que estão mais lentos a partir da view pg_stat_activity, esse pode ser o ponto de início para uma análise mais aprofundada sobre o problema de performance.

Além disso, os seguintes parâmetros de configuração podem ser alterados para melhorar a velocidade do sistema:

  • max_connections: aqui você define o número máximo de conexões que o seu banco de dados possuirá;
  • checkpoint_segments: operação que grava algumas informações do seu sistema, essa opção te dá a possibilidade de acrescentar ou diminuir as execuções dessa ferramenta;
  • work_mem: a memória de trabalho do PostgreSQL pode ser um dos gargalos do seu banco de dados;
  • shared_buffers: esse parâmetro tende a ser a opção mais efetiva para o aumento de performance no PostgreSQL. É recomendável que o valor não ultrapasse 25% da memória máxima do sistema, porém esse valor pode ser diferente para cada modelo.

5. Segurança

Segurança é um dos principais pontos na busca de um bom SGBD. O PostgreSQL não fica para trás nessa questão e consegue oferecer diversos recursos que auxiliam na segurança de seus dados.

Primeiramente, as suas informações são armazenadas em arquivos criptografados e podem apenas ser lidos através do super usuário do PostgreSQL. Por padrão, para conectarmos ao banco, precisamos estar fisicamente alocados a máquina que está com o sistema instalado, também é possível conectar remotamente, porém são necessárias algumas configurações.

Além de tudo isso, cada usuário possui o seu próprio cargo na hierarquia do PostgreSQL, a maioria apenas com a permissão de leitura de dados, desta forma, dificulta possíveis operações maliciosas de inserção, edição e exclusão dos dados.

6. Backup

Como qualquer outro tipo de sistema, o PostgreSQL possui ferramentas internas que auxiliam na execução de backups. Fundamentalmente, as três abordagens mais populares são:

  • SQL dump: a ideia aqui é gerar um arquivo SQL com todas as tabelas e informações;
  • Backup através do sistema de arquivos: a segunda alternativa é copiar os arquivos do banco de dados diretamente do sistema de arquivos;
  • Arquivamento contínuo: por padrão, o PostgreSQL cria um log para cada operação realizada no seu banco de dados, a partir disso, podemos caso seja necessário utilizar esse arquivo de logs para a recuperação de nossos dados.

7. Multi-Version Concurrency Control (Controle de concorrência multi-versão)

O Multi-Version Concurrency Control (MVCC) é uma das técnicas avançadas para solucionar problemas relacionados a performance de um banco de dados que é utilizado por múltiplos usuários.

Ao invés de bloquear as operações de uma tabela quando outras operações estão sendo feitas, o MVCC garante que as informações serão adicionadas ao banco de dados de uma forma segura. Essa proteção torna as transações mais efetivas e os dados menos inconsistentes.

Quais os pré-requisitos de instalação do PostgreSQL?

Provavelmente qualquer computador ou servidor atualmente deve ter a capacidade de executar o PostgreSQL. Mas de qualquer forma, os pré-requisitos para a instalação são:

  • Sistema compatível (Windows, Linux, MacOS, FreeBSD ou Solaris);
  • 2GB de memória RAM;
  • 2GB de armazenamento interno;
  • 1GHZ de processamento com 2 núcleos.

Como instalar o PostgreSQL? Tutorial!

Para realizar a instalação do PostgreSQL, você vai precisar acessar a sua página oficial de download e selecionar o sistema operacional que você utiliza. No nosso caso, usaremos o Ubuntu do Linux.

Tela para escolha do sistema operacional para download do instalador do PostgreSQL

Ao clicarmos no ícone do sistema operacional seremos redirecionados para uma página com as instruções de instalação.



Execute os seguintes comandos em sequência no seu terminal:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
sudo systemctl start postgresql.service

Se tudo der certo, será possível entrar no PostgreSQL utilizando o comando abaixo:

sudo -u postgres psql
Tela do PostgreSQL rodando no Ubuntu

Como usar o PSQL para gerenciar o PostgreSQL?

O PSQL é um terminal interativo do PostgreSQL. A interface do terminal oferece a possibilidade de realizar conexões e operações em bancos de dados.

Rodando o comando sudo -u postgres psql entramos nessa interface, já o comando \du renderiza todos os usuários do sistema e suas permissões.

O usuário postgres é o usuário padrão do PostgreSQL. Possui todas as permissões e é importante que você configure uma senha. O Comando \password postgres servirá para isso.

Exemplo de uso do PostgreSQL na prática!

A partir daqui podemos criar o nosso próprio banco de dados e até conectar nele.



O comando CREATE DATABASE serve para criar o nosso banco e o comando \c é utilizado para a conexão.

Em seguida vamos criar a nossa primeira tabela:

Criação de tabela com PostgreSQL

A expressão CREATE TABLE executa a criação da tabela e o comando \dt imprime no terminal a nossa tabela.

Podemos inserir novas linhas para a nossa tabela:



Novamente utilizamos os comandos do SQL, primeiramente o INSERT INTO para inserir e o famoso SELECT para imprimir os valores da nossa tabela.

Como podemos ver, rapidamente já conseguimos criar uma tabela utilizando os comandos que o PostgreSQL nos oferece. 

Comparativo entre SGBDS: SQL Server, PostgreSQL e MySQL!

Veremos a seguir as principais diferenças entre esses sistemas de gerenciamento de banco de dados.

SQL Server

O SQL Server é mantido pela Microsoft e é uma das opções mais escolhidas pelo mundo corporativo. O motivo para isso é que a sua solução já consegue trabalhar com quantidades elevadas de dados e processos por padrão. Possui maior compatibilidade com o Windows, mas é possível instalá-lo em outros sistemas operacionais.

Na sua infraestrutura conta com recursos de análise, integração com outros sistemas e até de comunicados de alertas ou erros nas operações. Possui um plano gratuito, porém com especificações realmente baixas, contando com 1GB de RAM e 1GHZ de processamento.

PostgreSQL

É um banco relacional muito bem conhecido e estabelecido no mercado, possui diversas funções que agregam os tipos de dados e organizam o seu armazenamento. Por ser um sistema totalmente open source qualquer pessoa pode baixá-lo e adicionar novas funcionalidades, também é considerado um dos melhores bancos de dados da sua categoria.

MySQL

O MySQL sem sombra de dúvidas é um dos mais populares banco de dados que existe. A razão para isso é a sua velocidade, confiabilidade e possuir o código totalmente aberto. Empresas como o Google, Linkedin, Amazon, Twitter, Netflix, entre outras utilizam o MySQL por baixo dos panos.

Para utilizar da funcionalidade principal desse SGBD não precisamos gastar nada, apenas precisamos pagar pelas ferramentas adicionais que podem ser úteis em alguns contextos.

Logo do MySQL

Conclusão

O PostgreSQL é um sistema de gerenciamento de banco de dados (SGBD) relacional e multiparadigma, sendo possível instalá-lo em Windows, Linux, MacOS, FreeBSD e Solaris. Com mais de 30 anos de desenvolvimento, também é conhecido como Postgres e seu código é aberto para qualquer um.

É conhecido notoriamente por possuir diversos tipos de dados e ainda abrir margem para criação de novos tipos totalmente customizáveis. Além disso, contém ferramentas internas que garantem a segurança dos dados quando operações concorrentes são feitas por dois ou mais usuários.

Ficou com dúvida sobre as operações do PostgreSQL? Então aprenda mais com o CRUD: as 4 operações básicas do banco de dados!