Tenho um monte de propriedades (colunas no banco de dados) que devem ter um valor de string de uma lista de valores predefinidos, por exemplo active
, inactive
, pending
.
Fora do banco de dados, que é javascript (deno+react no front-end), eu realmente quero tê-los como enumerações de strings, e não como inteiros, porque isso adiciona alguma clareza ao código e, na verdade, reduz a quantidade de código que você precisa escrever.
No banco de dados, tenho duas opções: armazená-los como estão (strings) ou smallint
convertê-los de/para strings durante a seleção/inserção no banco de dados.
O problema com a segunda opção é que ela requer uma transformação adicional no código e, ao usar o TypeScript, essa transformação não é tão direta quanto fazer um mapeamento simples, porque o ts não permite que você reatribua tipos diferentes a propriedades existentes, então você precisa copiar e fazer mais coisas...
De qualquer forma, eu só queria perguntar, quanto é o desempenho do postgres e/ou sobrecarga de tamanho se eu armazená-los diretamente como strings no banco de dados também, para eliminar a etapa de transformação? Imagino que cada registro cresceria em cerca de 20 bytes se eu mudasse de smallint
para text
e isso teria algum tipo de efeito no desempenho? Além disso, essas colunas precisam ser indexadas, e isso adiciona outros 20 bytes para cada registro