Pergunta

Atualmente, as chaves primárias em nosso sistema são 10 dígitos longos, pouco mais o limite para Java inteiros. Eu quero evitar quaisquer problemas de manutenção na estrada causada por sobrecarga numérica nessas chaves, mas ao mesmo tempo eu não quero sacrificar muito o desempenho do sistema para armazenar infinitamente grandes números que eu nunca vai precisar.

Como você lida com o gerenciamento do tamanho de uma chave primária? Eu sou melhor fora de furar com inteiros Java, para o benefício de desempenho durante o maior tempo, e aumentando o tamanho quando necessário, ou devo morder a bala, ir com Java longo para a maioria dos meus PKs, e nunca precisa se preocupar com transbordando o tamanho seqüência?

Foi útil?

Solução

Eu sempre ido com chaves longas (número (18,0) no banco de dados), porque eles simplesmente remover a possibilidade de esta situação acontecendo em praticamente todas as situações (aplicativos estilo açambarcamento extremo dados lado). Tendo o mesmo tipo de dados em todas as mesas para o meio-chave que você pode compartilhar esse campo em todos os seus objetos de modelo em uma classe pai, bem como ter código consistente o seu o seu getters SQL, e assim por diante.

Outras dicas

Parece que a resposta depende de como provavelmente você está a transbordar os inteiros Java com seus dados. E não há nenhuma maneira de saber que sem alguma idéia do que seus dados estão.

O benefício de desempenho seria insignificante, por isso o meu conselho seria para ir com as chaves longas. Tendo que lidar com isso no caminho provavelmente seria um dos principais problemas.

É um equilíbrio entre o custo de armazenamento e uso de números inteiros longas, contra a probabilidade de transbordamento um inteiro de 32-bit.

Considere que um não assinados lojas 32-bit inteiro mais de 4 bilhões valores. Se você acha que está indo para mais média de 1 nova linha a cada segundo desta tabela para os próximos 136 anos, então você precisa usar um longo.

32 bit inteiros em java são inteiros assinado, portanto, apenas 2 bilhões. Se por algum motivo, sua seqüência mantém saltando agora e, em seguida, em seguida, haverá algumas lacunas entre as PKs.

não faz mal ter uma longa (Lembre-se que o problema Y2K aconteceu porque alguns desenvolvedores COBOL pensou que eles vão economizar alguns bytes em datas ??): -)

Por isso, eu sempre uso a longo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top