Database
 sql >> Base de Dados >  >> RDS >> Database

Como selecionar os tipos de dados corretos


À medida que a quantidade de dados de uma empresa típica cresceu exponencialmente, tornou-se ainda mais importante otimizar o armazenamento de dados. O tamanho dos seus dados não afeta apenas o tamanho e os custos do armazenamento, mas também o desempenho da consulta. Um fator chave para determinar o tamanho dos seus dados é o tipo de dados que você seleciona. Este tutorial explicará como selecionar os tipos de dados corretos.

O que são tipos de dados?


Tipos de dados definir que tipo e intervalo de dados podem ser armazenados em um determinado campo (ou coluna).

Considere uma tabela de vendas com estes registros de amostra:



Cada campo tem seu próprio tipo e intervalo de valores:

hora_compra :data e hora da vendasale_id :valores inteiros incrementados em um para cada nova vendacustomer_id :valores inteiros incrementados em um para cada novo clientemoeda :texto sempre no código de moeda de 3 caracteresamount_paid :valores numéricos reais monetários entre US$ 0,00 e US$ 1.000,00dispositivo :texto, onde os valores podem ser:'desktop', 'aplicativo móvel' e 'web móvel'has_discount :boolean onde as entradas podem ser TRUE ou FALSE notas :texto, onde a entrada pode ser tão longa quanto o permitido em nossa ferramenta de entrada de agentes (250 caracteres)

O tipo de dados (inteiros, texto, números reais, etc…) e os possíveis intervalos de valores (0 a 1.000; quaisquer 3 caracteres; etc…) correspondem a tipos de dados específicos do banco de dados .

Quais são os tipos de dados possíveis?


Diferentes bancos de dados têm diferentes tipos de dados disponíveis, mas a maioria se encaixa nessas categorias:

Numérico:
  • inteiros :para números sem frações. Pode ser com sinal (permite valores positivos e negativos) ou sem sinal (permite apenas números positivos). Comumente usado para campos de ID e contagens de algo
  • decimal(x,y) :para números com frações que requerem precisão exata. Pode ser com sinal (permite valores positivos e negativos) ou sem sinal (permite apenas números positivos). Comumente usado para campos monetários. O usuário especifica o número de dígitos significativos permitidos em geral (x) e após o ponto decimal (y) entre parênteses
  • float / doubles :para números com frações que não requerem precisão exata. Pode ser com sinal (permite valores positivos e negativos) ou sem sinal (permite apenas números positivos). Comumente usado para todos os números reais, exceto campos monetários

Data/hora:

data :para valores de data
  • hora :para valores de tempo
  • carimbo de data/hora :para valores de data e hora

Texto:
  • personagem(n) :para cadeias de caracteres de comprimento fixo, onde o valor entre parênteses determina o tamanho fixo de cada entrada
  • varchar(n) :para cadeias de caracteres de comprimento variável, onde o valor entre parênteses determina o tamanho máximo aceito de cada entrada

Booleano:
  • booleano :para valores booleanos (verdadeiro/falso). Alguns bancos de dados (como MySQL) não têm tipo de dados booleano e, em vez disso, convertem valores booleanos em inteiros (1=TRUE, 0 =FALSE)

A maioria dos bancos de dados oferece variações de tamanho para cada tipo. Por exemplo, o MySQL fornece estes possíveis tipos de dados inteiros:


Como selecionar os tipos de dados corretos


A estratégia básica para selecionar o melhor tipo de dados é selecionar o menor tipo de dados que corresponda ao tipo de dados que você possui e que permita todos os valores viáveis ​​de seus dados.

Por exemplo, customer_id em nossa tabela de vendas de amostra é um número inteiro começando com 0. Hoje nossa empresa fictícia tem apenas 15.000 clientes. Usando a tabela de tipos de dados inteiros do MySQL da seção anterior, podemos ser tentados a selecionar SMALLINT unsigned como o tipo de dados, pois esse é o menor tipo de dados que aceitará nossos valores inteiros atuais de 0 a 15.000. No entanto, esperamos chegar a 100.000 clientes nos próximos 6-12 meses. Quando ultrapassarmos 65.535, o SMALLINT não será mais suficiente. Assim, uma seleção melhor é MEDIUMINT sem assinatura, que deve nos cobrir pelos próximos anos.

Você pode permitir que seu banco de dados selecione os tipos de dados para você ao criar sua tabela com registros de amostra. No entanto, isso raramente fornecerá a melhor seleção de tipo de dados. Por exemplo, deixar o MySQL selecionar os tipos de dados para uma tabela de vendas com os valores de amostra mostrados anteriormente gera vários problemas.



Os problemas que encontramos com os tipos de dados que o MySQL selecionou automaticamente são:
  1. tipo de dados incorreto :você não poderá usar o campo da maneira que você esperaria. Por exemplo, ter purchase_time como uma string e não um tipo de dados de tempo significa que você não poderá realizar operações de tempo (como calcular quanto tempo passou desde a compra) no campo
  2. muito restrito :O MySQL apresentará erros quando você tentar inserir valores maiores do que o tipo de dados permite. Por exemplo, receberemos erros se tivermos uma venda com um valor_pago de US$ 100,00 ou mais ou um agent_comment com mais de 65 caracteres
  3. muito conservador :embora nada deixe de ser muito conservador com os tipos de dados, você estará desperdiçando espaço de armazenamento. Com nossos dados de exemplo, poderíamos economizar 15% de armazenamento usando as opções preferenciais menos conservadoras

Por mais inteligentes que sejam os bancos de dados modernos, os proprietários dos dados ainda sabem melhor que tipo de dados são armazenados e quais são os possíveis valores que os dados podem assumir no futuro próximo. Portanto, você precisa especificar cuidadosamente os tipos de dados para cada um de seus campos.

A documentação sobre tipos de dados para diferentes bancos de dados comuns é fornecida aqui:
  • MySQL
  • Amazon Redshift
  • Apache Hive
  • Teradata

Conclusão


Para que seu banco de dados funcione corretamente e seja o mais otimizado possível, é importante selecionar cuidadosamente os tipos de dados para cada campo em suas tabelas.