Лучший (самый эффективный) DataType для использования в качестве идентификаторов JPA для UUID - PullRequest
3 голосов
/ 08 апреля 2009

Я хочу использовать UUID в качестве идентификаторов для своих объектов JPA.

В настоящее время я просто использую строку для хранения UUID. Что было бы эффективнее?

1 Ответ

5 голосов
/ 08 апреля 2009

Как вы измеряете эффективность?

Например, сохранение UUID (который представляет собой текстовую кодировку byte[]) в виде пары значений long позволит вам очень быстро сравнить их в 64-битной архитектуре (намного быстрее, чем * 1005). * сравнение, которое является посимвольным). Однако ваша эффективность кодирования пострадает, потому что вы должны написать собственный тип.

Что важно в вашем случае?


Если вы заинтересованы в производительности в базе данных, производительность будет в некоторой степени зависеть от выбранной вами базы данных, но все будут по существу сравнивать UUID побайтово. Таким образом, важно сделать различия между ключами более вероятными к началу ключа.

UUID хорошо спроектированы в этом отношении. Лучший UUID - это «случайный» стиль. У них нигде нет много общих подстрок, включая начало, и они не пропускают информацию о машине, которая их сгенерировала. Но стиль UUID «временной метки» также является хорошим ключом, поскольку биты младшего разряда (которые быстро меняются) находятся в начале строки, а биты старшего разряда (которые не меняются для последующих UUID) позже.

...