O excesso de informações geradas e gerenciadas pelas empresas nunca foi tão grande, e só aumenta com o passar do tempo. Lidar com essa enxurrada exige tecnologia, inteligência e ferramentas. Para isso, bancos de dados objeto-relacionais viabilizam a organização e a qualidade das informações do seu negócio. Estamos na era digital e isso reforça a importância de se manter atualizado com as tendências de Big Data e Big Query.
O PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR), desenvolvido como projeto de código aberto com mais de 30 anos de desenvolvimento ativo sob licença do TLP (The PostgreSQL License). Dessa forma, o PostgreSQL tem um forte reputação de confiabilidade, robustez, recursos e desempenho, principalmente pela dedicação da comunidade de código aberto por trás do software. O PostgreSQL suporta cargas de trabalho consideráveis e consegue processar grandes volumes de informações.
- Consultas complexas.
- Software robusto e de alta qualidade com código de manutenção e bem comentado.
- Chaves estrangeiras.
- Integridade transacional.
- Controle de concorrência multi-versão.
- Suporte ao modelo híbrido objeto relacional.
- Facilidade de acesso.
- Linguagem procedural em várias linguagens para procedimentos armazenados.
- Indexação por texto.
Além disso, o PostgreSQL utiliza e estende a linguagem SQL (Structured Query Language), a linguagem de instruções utilizadas para conversar com banco de dados relacionais, podendo ser executado em todos os principais sistemas operacionais.
- Tipos de Dados
- Primitivos: Integer, Numeric, String, Boolean
- Estruturada: Date/Time, Array, Range, UUID
- Documento: JSON/JSONB, XML, Key-value (Hstore)
- Geometria: Ponto, Linha, Círculo, Polígono
- Customizações: Tipos compostos e personalizados
- UNIQUE, NOT NULL
- Chaves Primárias
- Chaves Estrangeiras
- Restrições de Exclusão
- Bloqueios explícitos, bloqueios consultivos
- Indexação
- Transações, Transações Aninhadas
- Controle de Simultaneidade de várias Versões
- Paralelização de Consultas
- Particionamento de Tabela
- Todos os níveis de isolamento de transação definidos no padrão SQL
- Compilação just-in-time de expressões
- Log de gravação antecipada
- Replicação: Assíncrona, Síncrona, Lógica
- Recuperação Pontual, Reservas Ativas
- Tablespaces
- Autenticação
- Sistema de Controle de Acesso Robusto
- Segurança em Nível de Coluna e Linha
- Autenticação Multifator com Certificados
- Funções e Procedimentos Armazenados
- Linguagens Procedurais
- Suporte para conjunto de caracteres internacionais
- Case-insensitive
- Pesquisa de Texto Completo
Quando PostgreSQL é baixado e instalado junto vem um utilitário importante: o psql.
Psql é um utilitário utilizado para administrar e gerenciar o PostgreSQL. É um cliente terminal que permite digitar comandos SQL ou meta-comandos, permitindo enviar instruções ao Postgres.
Outra característica é que podemos efetuar conexões remotas e também usá-lo como uma ferramenta de script.
No Windows, para acessá-lo, abra o Prompt de Comando (CMD) e digite:
psql --U postgres
Para efetuar conexões remotas:
psql -h hostname -p 5432 -d dbname -U username -W
Vale enfatizar que, na configuração de acesso ao postgres, não utilize uma senha fraca, como normalmente usam “postgres”. Desse jeito, isso tornará o sistema vulnerável a ataques de crackers.
O usuário postgres é um superusuário padrão do PostgreSQL, similar ao usuário root do MySQL. Quando você rodar o comando, será pedida a senha e você deverá digitar a senha que foi configurada.
Se tudo ocorreu bem, nenhum erro foi gerado e já está com acesso. Agora, podemos rodar comandos para se comunicar com o PostgreSQL, utilizando meta-comandos ou SQL puro. Inclusive, vamos falar um pouquinho sobre estes últimos.
Um meta-comando é um comando para cliente psql, já que o SQL é enviado para o servidor de banco de dados.
Todas as linhas que começam com contrabarra ( \ ), ou barra invertida, como o primeiro caractere não vazio são presumidos como meta-comandos. O próprio psql processa esse comando, tornando-o mais útil para administração e scripts.
\a – se o formato de saída da tabela atual não estiver alinhado, ele será alterado para alinhado. Se não estiver desalinhado, é definido como desalinhado.
\q – informa ao cliente para sair do banco de dados.
\cd – altera o diretório de trabalho atual. Sem argumento, muda para diretório home do usuário atual.
\C – define o título de qualquer tabela sendo impressa como resultado de uma consulta ou remove a definição de qualquer título.
\connect – estabelece uma nova conexão com o servidor PostgreSQL.
\copy – esta é uma operação que executa um comando SQL COPY, mas em vez de o servidor ler ou gravar o arquivo especificado, o psql lê ou grava o arquivo e roteia os dados entre o servidor e o sistema de arquivos local.
\copyright – mostra os direitos autorais e os termos de distribuição do PostgreSQL.
\d – para cada relação ou tipo composto correspondente ao padrão, mostra todas colunas, seus tipos, o espaço de tabela (se não o padrão) e quaisquer atributos especiais, como NOT NULL ou padrões.
\da – lista funções agregadas, junto com seu tipo de retorno e os tipos de dados nos quais operam. Se o padrão for especificado, apenas agregados cujos nomes correspondem ao padrão são mostrados.
\db – lista os tablespaces.
\dc – lista conversões entre codificações de conjunto de caracteres.
\dC – lista os tipos de conversões.
\dd – mostra as descrições de objetos de restrição de tipo, classe de operador, família de operadores, regras e gatilho.
\dD – lista os domínios.
\ddp – lista as configurações de privilégios de acesso padrão.
\df – lista funções, juntamente com seus tipos de dados de resultado, tipo de dados de argumento e tipos de função.
\dl – alias para \lo_list, que mostra uma lista de objetos grandes.
\dn – lista os esquemas (namespaces).
\do – lista os operadores com seus operandos e tipos de resultado.
\dp – listas tabelas, visualizações e sequências com seus privilégios de acesso associados.
\du – lista funções do banco de dados.
\echo – imprime os argumentos avaliados na saída padrão, separados por espaços e seguidos por uma nova linha.
\encoding – define a codificação do conjunto de caracteres do cliente. Sem um argumento, esse comando mostra a codificação atual.
\f – define o separador de campo para saída de consulta não alinhada. O padrão é barra vertical (|). É equivalente a \pset fieldsep.
\g – envia o buffer de consulta atual ao servidor para execução.
\help – fornece ajuda de sintaxe no comando SQL especificado. Se o comando não for especificado, o psql listará todos os comandos para os quais a ajuda de sintaxe está disponível.
\i – lê a entrada do arquivo filename e o executa como se tivesse sido digitado no teclado.
\r – reinicia (limpa) o buffer de consulta.
\s – imprime o histórico da linha de comando do psql para filename.
\set – define o nome da variável psql para o valor ou, se mais de um valor for fornecido, para concatenação de todos eles.
\t – alterna a exibição de cabeçalhos de nome de coluna de saída e rodapé de contagem de linha.
\z – lista tabelas, visualizações e sequências com seus privilégios de acessos associados.
A definição completa de todos os meta-comandos, além de todos os aspectos oficiais relacionados ao postegres, pode ser encontrado na documentação oficial do PostgreSQL: https://www.postgresql.org/docs/current/index.html
SQL é um acrônimo para Structured Query Language (Linguagem de Consulta Estruturada). E o seu nome sugere exatamente o que ela faz:
É uma linguagem de consulta declarativa utilizada por programadores e/ou administradores de banco de dados para comunicar-se com os bancos de dados relacionais através de instruções competentes a sua estrutura.
Você pode usá-la no psql também.
CREATE DATABASE <<NOME_DO_SEU_BANCO_DE_DADOS>>
Criando uma tabela/relação na base de dados:
CREATE TABLE <<NOME_DA_TABELA>> (
/* DEFINIÇÃO DOS CAMPOS DA TABLE */
);
Inserindo dados na tabela
INSERT INTO <<NOME_DA_TABELA>> VALUE (
/*VALORES SEQUENCIALMENTE DE ACORDO COM A TABELA SEPARADOS POR VÍRGULA*/
);
Projetando conjunto de resultados
SELECT <<LISTA_DE_SELEÇÃO>> FROM <<NOME_DA_TABELA>>;
O pgAdmin é uma aplicação cliente com interface gráfica de usuário (GUI) que envia e recebe em SQL para o postgres. Um cliente pgAdmin pode acessar muitos servidores postgres e um servidor postgreSQL pode ser acessado por muitos clientes pgAdmin simultaneamente.
Neste link podemos encontrar mais informações sobre o pgAdmin, algumas suas funcionalidades atuais: https://www.pgadmin.org/.
No sistema operacional Windows, depois do postgresql instalado, você pode encontrá-lo digitando na barra de pesquisa no menu iniciar.
Ao executá-lo, um servidor Web será iniciado na sua máquina e poderá ser acessado pelo seu navegador padrão. Abaixo uma imagem da interface.
A conexão de uma aplicação a um banco de dados depende de como cada linguagem de programação ou framework realiza, variando em maneiras diferentes de se fazer isso, e com PostgreSQL não é diferente. Por exemplo, no caso do Java, a conexão pode ser feita utilizando o JDBC. Em Python, podemos utilizar a interface pyPostgreSQL.
Python
Depois que o pyPostgreSQL estiver instalado, podemos codificar a conexão da seguinte forma:
import postgresql
db = postgresql.open( user = ‘username’, database = ‘database_name’, port = 5432, password = ‘password’ )
Existem várias formas de realizar essa conexão para várias linguagens de frameworks que lidam com o banco de dados, principalmente os relacionais.
PostgreSQL é versátil e prático. Existem diveras tecnologias com o mesmo objetivo de sistemas gerenciadores de dados, mas eles seguem o mesmo padrão de funcionalidade.
É isso!
Fonte de referência: Farid Londono