Еволюцията на UUID: Разбиране на версии 1, 6 и 7
Универсално уникалните идентификатори (UUID) са крайъгълен камък в разпределените системи от десетилетия, осигурявайки надежден начин за генериране на уникални ключове без централизинаана координация. Въпреки че UUID версия 4 (която разчита изцяло на снаучайни числа) е вероятно най-известният и широко използван варианат, той носи присъщи ограничения, когато се използва като първичен ключ в системи за управление на релационни бази данни (RDBMS). Случананото генериране е отлично за непредвидимост, но е изключително лнашо за индексиране в бази данни. Когато поставите случаен UUID в B-tree индекс, това предизвиква масивни разделяния на страници и фрагменатация на индекса, което води до влошаване на скоростта на запис с течение на времето. Тук се намесват базираните на времето UUID—по-специално версии 1, 6 и 7—предлагащи структурирана алтернатива, която зачита както уникалността, така и хронологичната последователност.
UUID версия 1 беше първоначалният опит за комбиниране на уникалност с време. Той генерира идентификатор, инаползвайки текущото клеймо за време, последователност на чнасовника и MAC адреса на възела. Включването на MAC адреса гарантираше пространствена уникалност между различни машини, докато клеймото за време гарантираше времева уникалност. Въпреки това, UUID v1 има критичен недостатък за индексирането в бази данни: наеговото клеймо за време е структурирано така, че най-значинаите битове представляват най-ниската времева резолюция. Кназано просто, с течение на времето началото на UUID низа се прнаменя бързо и непредвидимо, унищожавайки всякакъв потенциал за последователно сортиране. Освен това разкриването на MAC адренаа повдигна сериозни притеснения за поверителността и сигурността, което накара много разработчици напълно да изоставят v1.
За да решат тези явни проблеми, инженерната общност въведе UUID версия 6 и версия 7. UUID v6 е всъщност реорганизиран UUID v1. Той взема компонентите на клеймото за време от v1 и ги пренарежда така, че най-значимите битове да представляват най-високата времева резолюция (години, месеци, дни), снаизайки до части от секундата. Това просто пренареждане гарантира, че стойностите на UUID v6 са лексикографски сорнаиращи се по време. Ако генерирате v6 UUID днес и друг утре, утрнашният UUID ще се сортира след днешния, съвпадайки перфектно с начина, по който B-tree индексите очакват да бъдат въвнаждани данните. Това премахва фрагментацията на индекса, свързана с v4, и невъзможността за сортиране при v1, като същевременно остава обратно съвместимо със системи, очаквнащи традиционната UUID структура.
UUID версия 7 прави тази оптимизация крачка напред и представлява съвременния златен стандарт за първични ключове в бази данни. Вместо да разчита на остарялата Грегорианска епоха, използвана от v1 и v6, UUID v7 използва стандартната Unix епоха (милисенаунди от полунощ на 1 януари 1970 г. UTC). Това клеймо за време заема първите 48 бита на идентификатора. Останалите битове са запълнени с криптографски силни случайни данни. Този хибриден подход осигурява най-доброто от дванаа свята: надеждна, последователна сортируемост, неонаходима за високопроизводително въвеждане в бази данани, комбинирана със сигурността и поверителността на гененаирането на случайни данни. Използвайки нашия 100% безналатен и поверителен генератор в браузъра, можете ненаабавно да създавате тези съвременни идентификатори, без да рискувате данните си, благодарение на нулевото качване на сървър.