Recursos e casos de uso do PostgreSQL
PostgreSQL é um sistema de gerenciamento de banco de dados relacional de objeto (DBMS) de código aberto. É um sistema avançado de gerenciamento e análise de banco de dados usado principalmente para plataformas de comércio eletrônico, transações de pagamento e várias soluções de armazenamento de dados. Ele existe há mais de 30 anos e é atualizado regularmente todos os anos, suporta várias funções SQL, como gatilhos, tipos e funções definidos pelo usuário, subconsultas, etc.
O PostgreSQL é um dos bancos de dados de código aberto mais avançados do mundo. É adequado para vários casos de uso de produção e desenvolvimento. Ele oferece várias vantagens, como particionamento aprimorado e desempenho de consulta (particularmente em grandes conjuntos de dados), aprimoramentos de árvore B para utilização ideal do espaço, estatísticas de valor mais comum (MCV) de várias colunas, expressões de tabela comuns com inlining de consulta e controle de soma de verificação.
Algumas palavras sobre o Ubuntu 20.04 na DigitalOcean
Ubuntu é um popular sistema operacional de desktop de código aberto. O Ubuntu 20.04 inclui vários recursos de ponta, como uma ferramenta para gerenciar instantâneos do ZFS, um grande aumento no kernel e melhorias de segurança. A plataforma em nuvem da DigitalOcean fornece uma infraestrutura robusta e disponibilidade global para desenvolver, gerenciar e dimensionar aplicativos na nuvem. Com seus produtos de computação, armazenamento, bancos de dados e rede, os desenvolvedores podem criar aplicativos móveis e da Web, serviços de streaming, jogos, soluções SaaS e muito mais. Oferecendo recursos como rede privada compartilhada, ferramentas DevOps de um clique e discos rígidos SSD, a DigitalOcean é uma escolha flexível, segura e simples para soluções de missão crítica.
Este tutorial fornece instruções detalhadas sobre como instalar o PostgreSQL no DigitalOcean Ubuntu 20.04. Sem mais delongas, vamos começar!
|
Pré-requisitos para instalar o PostgreSQL
Antes de mergulharmos na instalação real do PostgreSQL 12 no DigitalOcean Ubuntu 20.04, você precisa ter certeza de que seu sistema atende aos seguintes pré-requisitos.
- O servidor deve ter pelo menos um firewall UFW básico para garantir que apenas conexões com determinados serviços sejam permitidas.
- O sistema deve ser atualizado para uma nova instância do servidor e reinicializado. Para fazer isso, use os seguintes comandos:
sudo apt update && sudo apt upgrade –y
sudo reboot
Instalando o PostgreSQL no Ubuntu 20.04 DigitalOcean
Você pode instalar o PostgreSQL 12 usando os repositórios oficiais/padrão do Ubuntu 20.04 usando o sistema gerenciador de pacotes apt. Antes de fazer isso, você já deve ter atualizado o índice de pacotes local do seu servidor (veja os pré-requisitos acima).
O repositório contém diferentes pacotes (incluindo complementos de terceiros), como:
- postgresql-client
- postgresql
- libpq-dev
- postgresql-server-dev
- pacotes pgadmin
Em seguida, instale o pacote completo do PostgreSQL 12 junto com o módulo postgresql-contrib que fornece utilitários e funcionalidades adicionais. Isso pode ser instalado executando o seguinte comando:
sudo apt install postgresql postgresql-contrib –y
Em seguida, inicie o serviço PostgreSQL na reinicialização do sistema executando o seguinte comando:
sudo systemctl start postgresql
Para iniciar automaticamente o serviço PostgreSQL na inicialização do sistema, execute:
sudo systemctl enable postgresql
Verifique se o serviço PostgreSQL está funcionando conforme o esperado executando systemctl status postgresql:
sudo systemctl status postgresql
Isso deve retornar o status do serviço PostgreSQL e deve mostrar ativo, semelhante à captura de tela abaixo.
Personalizando a inicialização do PostgreSQL
Após a instalação, um cluster de banco de dados pode ser criado com a ajuda do comando initdb. O comando initdb deve ser executado a partir do usuário do banco de dados e não do usuário root. O usuário root pode criar um diretório vazio que pode ser chowned (comando change owner) pelo usuário postgres. Este diretório conterá os dados como um modelo, que será copiado para todos os bancos de dados por padrão. Do usuário postgres, o comando a seguir pode ser invocado com a opção e o nome do diretório apropriados.
initdb [option...] [ --pgdata | -D ] directory
O comando initdb pode ser executado como um usuário autenticado com os diferentes sinalizadores para criar um modelo de banco de dados em um determinado diretório.
Abaixo está uma lista de sinalizadores específicos, conforme visto na captura de tela acima:
--encoding UTF8
(pode ser qualquer um baseado no Locale).- O sinalizador de codificação define a codificação do modelo de banco de dados. Todos os bancos de dados criados usando esse modelo também usarão o mesmo método de codificação, a menos que especificado separadamente. Existem muitos métodos de codificação disponíveis para diferentes idiomas.
--pgdata test
(este sinalizador cria um diretório chamado “teste” para armazenar os dados do banco de dados).- Especifica o diretório onde o cluster de banco de dados salva seus dados.
-A peer
(isso especifica o método de autenticação usado no arquivo pg_hba.conf).- Especifica o método de autenticação padrão para usuários locais usados em pg_hba.conf (host e linhas locais). O initdb preencherá as entradas do pg_hba.conf usando o método de autenticação especificado para conexões de não replicação e de replicação.
-k
(usa data-checksum para verificar erros de E/S)- Especifica a soma de verificação de dados em todas as páginas de dados para detectar a corrupção do sistema de E/S. No entanto, isso diminui a velocidade de processamento do banco de dados).
Protegendo seu banco de dados PostgreSQL
Durante a instalação, um novo usuário chamado postgres é criado automaticamente por padrão. Este usuário tem privilégios totais do sistema, por isso é importante proteger a conta do usuário com uma senha forte.
sudo passwd postgres
Agora mude para a conta de usuário postgres. O usuário deve ter privilégios sudo.
sudo su – postgres
A versão do PostgreSQL pode ser confirmada executando
psql -c "SELECT version();"
Para alterar a senha do
postgres
comando de uso do usuário:psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Nota:Esta senha só se aplica quando o
postgres
usuário se conecta ao PostgreSQL pela rede. Para acessar o banco de dados Postgres, você pode fazer login no banco de dados PostgreSQL com:
psql postgres
Por padrão, o PostgreSQL não exige autenticação de senha dos usuários do sistema local para acessar o banco de dados. Isso é chamado de “autenticação de pares”. No entanto, a autenticação de senha pode ser habilitada de dentro do
pg_hba.conf
Arquivo. Para editar este
pg_hba.conf
arquivo, use \q
comando para sair do shell postgres e entrar no shell do Linux. De dentro do shell do Linux, edite o pg_hba.conf
Arquivo. Certifique-se de fazer um backup antes de editar o arquivo. sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Em seguida, edite o arquivo usando o editor nano,
nano /etc/postgresql/12/main/pg_hba.conf
Encontre a linha local em “Somente conexões de soquete de domínio Unix” e altere o
METHOD
atributo de peer
para md5
. Recarregue o serviço PostgreSQL para aplicar as novas configurações.
sudo systemctl reload postgresql
Observe aqui que existem dois usuários com o nome postgres; um é o usuário do Linux para conectar e acessar o banco de dados e o outro é o usuário do banco de dados que é usado para executar funções administrativas dentro do banco de dados.
Configurando seu banco de dados PostgreSQL
O PostgreSQL pode ser configurado manualmente para endereços e portas de escuta alterando os parâmetros necessários no arquivo postgresql.conf.
Por padrão, a porta 5432 do PostgreSQL é usada e escuta no localhost. Isso pode ser alterado editando o arquivo de configuração.
sudo nano /etc/postgresql/12/main/postgresql.conf
O serviço será reiniciado após qualquer alteração.
sudo systemctl restart postgresql
Criando uma nova função no PostgreSQL 12
A autenticação e autorização no PostgreSQL 12 acontecem através do conceito de “papel”. Aqui, função é um termo flexível que se refere a usuários e grupos.
Faça login no usuário postgres usando este comando a seguir:
sudo su postgres
Novas funções podem ser criadas interativamente a partir da linha de comando com o comando createrole –interactive. Aqui, o uso do sinalizador –interactive criará um prompt para o nome da nova função e se essa função deve receber permissões de superusuário.
Um novo usuário pode ser criado com uma nova função fora do shell postgresql do usuário como:
createuser –interactive
A saída do novo comando do usuário deve se parecer com isso.
Criação e exclusão de um banco de dados no servidor PostgreSQL
No PostgreSQL 12, quando uma nova função é criada, um novo banco de dados com o mesmo nome deve existir, pois a função tenta se conectar ao banco de dados por padrão. Assim como na seção anterior, onde o usuário liam é criado, um banco de dados com esse nome pode ser criado usando o seguinte comando:
createdb liam
No PostgreSQL 12, existem vários caminhos para criar bancos de dados conforme necessário:
- Quando conectado da conta postgres:
postgres@server:~$ createdb liam
- Use
sudo
,sudo –u postgres created liam
Para excluir o banco de dados, podemos usar
dropdb liam
Abrindo um prompt do Postgres com a nova função
Um usuário Linux com o mesmo nome do banco de dados Postgres e função pode ser criado para efetuar login com autenticação baseada em ident.
Um usuário Linux pode ser criado (se ainda não existir) a partir da linha de comando digitando:
sudo adduser noah
Depois que o usuário for criado, ele poderá ser conectado usando o seguinte comando;
sudo -u noah psql
O banco de dados atual e as informações do usuário podem ser acessados usando;
\conninfo
Gerenciamento PostgreSQL
Criando e excluindo tabelas
O comando SQL
CREATE TABLE
pode ser usado para criar qualquer tabela dentro de um banco de dados. Uma lista de colunas e um tipo de dados para cada coluna devem ser especificados no comando. CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Este comando criará uma tabela chamada “clientes”. A primeira coluna conterá o ID do cliente do tipo inteiro. A segunda e terceira colunas são do tipo caractere e conterão o nome e sobrenome dos clientes com comprimento máximo de 80 caracteres.
Esta nova tabela pode ser vista digitando
\d
. A tabela pode ser excluída digitando:
DROP TABLE customers;
Inserindo, selecionando e excluindo dados em uma tabela
Os dados são adicionados às tabelas do PostgreSQL na forma de linhas. Cada linha representa um conjunto separado de dados. Os dados podem ser inseridos na linha usando o comando INSERT INTO. O nome do comando é seguido pelo “nome da tabela” (no exemplo a seguir, clientes), a palavra-chave VALUES, uma lista de valores separados por vírgula.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
O conteúdo da tabela pode ser visualizado usando o comando SELECT.
SELECT * FROM customers;
Uma linha pode ser excluída usando o
DELETE
comando. O WHERE
A palavra-chave é usada para selecionar as linhas condicionalmente. DELETE FROM customers WHERE last_name = 'Seller';
Para excluir todas as linhas, digite:
SELECT * FROM customers;
Adicionar e remover colunas de uma tabela
O PostgreSQL 12 oferece a capacidade de adicionar ou excluir colunas das tabelas existentes com facilidade.
A
ALTER TABLE
O comando é usado junto com o comando ADD
palavra-chave para adicionar uma coluna a uma tabela existente. Este campo é definido como vazio para as linhas existentes na tabela. ALTER TABLE customers ADD branch_id int;
O mesmo comando é usado com o
DROP
palavra-chave para excluir a coluna especificada da tabela. ALTER TABLE customers DROP first_name;
Atualizando dados em uma tabela
Além de adicionar e excluir registros dentro de uma tabela, também podemos modificá-los. Isso pode ser feito usando o
UPDATE
comando. Precisamos especificar as colunas que precisam ser editadas com os novos valores. UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Considerações para o ambiente de produção
O PostgreSQL 12 pode ser usado com segurança em um ambiente de produção. Esse banco de dados é tão estável que não deve haver problemas para implementá-lo em grande escala. Para mais informações, consulte nosso artigo anterior aqui.
Conclusão
Este tutorial mostrou como configurar o PostgreSQL 12 em um servidor Ubuntu 20.04 rodando no DigitalOcean. O PostgreSQL 12 é um aplicativo complexo com muitos recursos novos e avançados, como gerenciamento de espaço aprimorado de índices de árvore B padrão e suporte para reconstrução de índice simultâneo e criação de índice de cobertura. A versão 12 também oferece suporte a consultas WITH embutidas e agrupamentos fornecidos pelo ICU, melhora o particionamento e fornece uma interface de armazenamento de tabela conectável para criar e usar métodos diferentes para armazenamento de tabela.
Agora que você conhece o básico sobre como configurar e usar um servidor PostgreSQL, por que não experimentar uma alternativa gerenciada? Com um serviço gerenciado como o ScaleGrid, você pode concluir todo o processo de configuração, instalação e configuração com o clique de um botão. Comece sua avaliação gratuita de 30 dias hoje e veja por si mesmo! Nenhum cartão de crédito é necessário e você pode configurar seu primeiro banco de dados em questão de minutos.
Cobrimos os fundamentos da instalação aqui e também fornecemos algumas instruções para administração geral do banco de dados. Esperamos que você tenha achado este guia útil.