Pergunta

Eu quero usar UUIDs como IDs para meus objetos JPA.

Atualmente, estou apenas usando uma string para armazenar o UUID. O que seria mais eficiente?

Foi útil?

Solução

Como você está medindo a eficiência?

Por exemplo, armazenar o uuid (que é um texto que codifica um byte[]) como um par de long Os valores permitirão que você os compare muito rapidamente em uma arquitetura de 64 bits (muito mais rapidamente do que String comparação, que é caractere por caractere). No entanto, sua eficiência de codificação sofreria, porque você precisa escrever um tipo personalizado.

O que é importante no seu caso?


Se você estiver interessado em desempenho no banco de dados, o desempenho dependerá um pouco do banco de dados que você escolher, mas todos compararão essencialmente o UUIDS Byte por byte. Portanto, o importante é fazer com que as diferenças entre as chaves sejam mais propensas a estar no início da chave.

Os uuids são bem projetados a esse respeito. O melhor uuid é o estilo "aleatório". Eles não têm muitas substâncias comuns em nenhum lugar, incluindo o começo, e não vazam informações sobre a máquina que as gerou. Mas, o estilo "Timestamp" dos Uuids também é uma boa chave, já que os bits de ordem baixa (que variam rapidamente) são os primeiros na corda, enquanto os bits de alta ordem (que não mudam para UUIDs sucessivos) vêm mais tarde.

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