Banco de Dados

27 mar, 2019

5 itens legais sobre data types do PostgreSQL

Publicidade

Eu sempre gostei de trabalhar com SGBDs diferentes, porque eu saia da minha zona de conforto e aprendia coisas novas. Para uma pessoa hiperativa isso é ótimo!

Sempre que me aventuro com um SGBD novo, uma das primeiras coisas que eu procuro entender são os tipos de dados suportados e suas particularidades.

Quando escolhemos um data type limitamos os valores que podem ser incluídos em uma determinada coluna e, dessa forma, começamos a garantir a qualidade dos dados.

Muito se fala de tunning, de ciência de dados e Inteligência Artificial, mas pouco se fala no quanto as empresas gastam porque precisam limpar os dados (que serão usados pelos cientistas de dados e engenheiros de IA), e um dos motivos para ter dados sujos é não escolher o data type correto.

A primeira versão deste artigo continha um resumo super extenso sobre os tipos de dados do PostgreSQL, mas confesso que ficou mega chato de ler e eu não tenho a mesma competência para escrever da comunidade que escreveu a documentação do PG, então recomendo fortemente que você leia a documentação para conhecer os tipos de dados.

Neste artigo vou destacar alguns itens que eu acho muito legais e que diferenciam o PG dos outros SGBDs (não vou falar sobre os tipos para pesquisa de texto, que são lindos, porque em breve escreverei um artigo sobre eles).

Item 1 – Tipos seriais

Um que eu adoro no PG são os tipos seriais. Os tipos de dados smallserial, serial e bigserial não são verdadeiros tipos, mas uma notação conveniente para a criação de colunas cujos valores são auto incrementais (semelhante à propriedade identity do SQL Server).

Item 2 – Tipo de Dados Interval

Representa um intervalo de tempo, aceita um parâmetro opcional (p) que especifica o número de dígitos fracionários retidos no campo de segundos. Por padrão, não há limite explícito na precisão. O intervalo permitido p é de 0 a 6.

O tipo interval tem uma opção que indica qual tipo de intervalo deve ser armazenado

  • YEAR
  • MONTH
  • DAY
  • HOUR
  • MINUTE
  • SECOND
  • YEAR TO MONTH
  • DAY TO HOUR
  • DAY TO MINUTE
  • DAY TO SECOND
  • HOUR TO MINUTE
  • HOUR TO SECOND
  • MINUTE TO SECOND

Item 3 – Tipo booleano

O que eu acho legal neste data type é que temos uma boa variedade de valores que podem ser usados com o mesmo significado (eu sempre uso os tradicionais TRUE / FALSE).

Valores literais válidos para o “verdadeiro”, são:

  • TRUE
  • ‘t’
  • ‘true’
  • ‘y’
  • ‘yes’
  • ‘on’
  • ‘1’

Para o “ falso ” , os seguintes valores podem ser usados:

  • FALSE
  • ‘f’
  • ‘false’
  • ‘n’
  • ‘no’
  • ‘off’
  • ‘0’

Item 4 – Tipos enumerados

Para a fanática da qualidade de dados, um tipo ENUM é uma beleza! Esses tipos de dados que compreendem um conjunto de valores ordenados e estáticos. Eles são equivalentes aos enum suportados em várias linguagens de programação.

Item 5 – Tipos de endereço de rede

O PostgreSQL oferece tipos de dados para armazenar endereços IPv4, IPv6 e MAC. É melhor usar esses tipos em vez de tipos de texto sem formatação para armazenar endereços de rede, porque esses tipos oferecem verificação de erros de entrada e operadores e funções especializadas.

Conclusão

Trago quatro conclusões que (na minha opinião) são verdades absolutas quando o assunto é banco de dados:

  • 1. Tuning começa com a escolha e pesquisa dos tipos de dados corretos para cada necessidade e SGBD.
  • 2. Quando escolhemos um data type limitamos os valores que podem ser incluídos em um determinado atributo, e dessa forma começamos a garantir a qualidade dos dados.
  • 3. Corrigir um data type é muito mais trabalhoso do que criar as colunas com o tipo certo.
  • 4. Limpar dados é caro!

Este assunto continuará com PostgreSQL como BD NoSQL e os tipos de dados para pesquisa de texto.

Referências