Лучший (наиболее эффективный) дат данных для использования для UUID в качестве идентификаторов JPA
Вопрос
Я хочу использовать Uuids в качестве идентификаторов для моих объектов JPA.
В настоящее время я просто использую строку для хранения UUID. Что было бы более эффективным?
Решение
Как вы измеряете эффективность?
Например, хранение UUID (это текстовый кодирование byte[]
) как пара long
Значения позволят вам сравнивать их очень быстро с 64-разрядной архитектурой (гораздо быстрее, чем String
Сравнение, которое является характером по характеру). Тем не менее, ваша эффективность кодирования будет пострадать, потому что вам нужно написать пользовательский тип.
Что важно в вашем случае?
Если вы заинтересованы в производительности в базе данных, производительность будет несколько зависеть от выбранной вами базы данных, но все по существу сравнит UUIDS Byte-Byte. Таким образом, важно сделать различия между ключами, которые с большей вероятностью будут к началу ключа.
Uuids хорошо разработаны в этом отношении. Лучший uuid - это «случайный» стиль. У них нигде не много общих подстроков, включая начало, и они не пропускают информацию о машине, которая их сгенерировала. Но стиль «временной метки» также делает хороший ключ, так как биты низкого порядка (которые быстро различаются) сначала в строке, в то время как биты высокого порядка (которые не меняются для последовательных UUID) потом.