А почему не сделали версию UUID, у которой был бы хэш от имени, как у UUID5, и таймстемп, как у UUID1? Ну с каким-то разумным распределением количества битов. Полезная вещь была бы...
Мне кажется, ты не понимаешь, что к UUID предъявляется только требование уникальности в отсутствие синхронизации между системами, а вовсе не переноса информации. Комбинация идентификатора системы и неповторяющегося счётчика (например, основанного на системном таймере) была выбрана только ради практической применимости без использования, скажем, генераторов случайных чисел. Эти значения не обязаны быть осмысленными и не обязаны быть сравнимыми на разных системах.
Как только ты объявляешь свою схему, закрепляющую значения конкретных битов, ты обязываешься поддерживать её до конца времён и требуешь этого от других, а также исходишь из неявных предположений, что все системы синхронизированы во времени (лол), имеют одинаковую разрядность таймера (лол, а давай её тоже закодируем, а потом будем использовать операции сравнения с нужным диапазоном точности), и получают идентификаторы централизованно (представь серверную ферму, тысячи виртуалок/контейнеров, которые каждую секунду пачками дохнут и запускаются). Кроме того, если мы перенесли код/данные на новую систему (те же виртуальные машины), нужно ли продолжать использовать старый идентификатор? А если мы клонировали систему, и дальше копии бегут в разные стороны?
@ceyt Погоди пожалуйста. Разные версии UUID — они немного для разного. Я ж не собираюсь такие требования применять к UUID4 например. Но ведь используются, пусть и нечасто, UUID1 и UUID5. Ради одной лишь уникальности можно бы было их всех на UUID4 заменить, и радоваться жизни. А поди ж ты, используются ведь. Ну так возможны и ситуации, когда требуются свойства их обоих.
Мне кажется, ты не понимаешь, что к UUID предъявляется только требование уникальности в отсутствие синхронизации между системами, а вовсе не переноса информации. Комбинация идентификатора системы и неповторяющегося счётчика (например, основанного на системном таймере) была выбрана только ради практической применимости без использования, скажем, генераторов случайных чисел. Эти значения не обязаны быть осмысленными и не обязаны быть сравнимыми на разных системах.
Как только ты объявляешь свою схему, закрепляющую значения конкретных битов, ты обязываешься поддерживать её до конца времён и требуешь этого от других, а также исходишь из неявных предположений, что все системы синхронизированы во времени (лол), имеют одинаковую разрядность таймера (лол, а давай её тоже закодируем, а потом будем использовать операции сравнения с нужным диапазоном точности), и получают идентификаторы централизованно (представь серверную ферму, тысячи виртуалок/контейнеров, которые каждую секунду пачками дохнут и запускаются). Кроме того, если мы перенесли код/данные на новую систему (те же виртуальные машины), нужно ли продолжать использовать старый идентификатор? А если мы клонировали систему, и дальше копии бегут в разные стороны?