UUID Գեներատոր

Ստեղծեք UUID-ներ ձեր բրաուզերում. պատահական v4, ժամանակով դասավորված v7, կամ դետերմինիստական v5։ Մինչև 1000 հատ միանգամից, և ոչինչ երբեք չի լքում ձեր սարքը։

Սեղմեք «Ստեղծել»՝ ընտրելու համար
Տարբերակ
Ընդլայնված Կարգավորումներ

Անհրաժեշտ է այնպիսի նույնացուցիչ, որը չի բախվի մեկ ուրիշի կողմից ստեղծվածի հետ, այն էլ մի սարքի վրա, որի մասին երբևէ չեք լսել, և այն էլ առանց որևէ մեկից թույլտվություն հարցնելու։ Հենց սա է UUID-ի գործառույթը։ Դա 128-բիթանոց թիվ է, որը գրվում է որպես 36 նիշ ծանոթ 8-4-4-4-12 ձևաչափով, և դրա ողջ կառուցվածքն այնպիսին է, որ դրանցից ոչ մի երկուսը նույնը չեն լինի, նույնիսկ եթե ոչինչ չի համակարգում, թե ով որն է ստանում։ Այս անվճար գեներատորը ստեղծում է դրանք ձեր բրաուզերում. ընտրեք տարբերակ «Տարբերակ» դաշտում, նշեք, թե քանիսն է ձեզ անհրաժեշտ «Քանակ»-ում և սեղմեք «Ստեղծել»։ Էջը բացվում է մեկ հատ v4-ով, որն այն տարբերակն է, որն անհրաժեշտ է նախագծերի մեծ մասին, այնպես որ առաջին նույնացուցիչը հասանելի է ընդամենը մեկ սեղմումով։

Յուրաքանչյուր նույնացուցիչ ստեղծվում է ձեր բրաուզերի կողմից Web Crypto API-ի միջոցով։ Տարբերակ 4-ը օգտագործում է crypto.randomUUID(), երբ բրաուզերն այն տրամադրում է, հակառակ դեպքում՝ crypto.getRandomValues(), ինչը գաղտնագրականորեն ուժեղ պատահականության աղբյուր է, այլ ոչ թե JavaScript-ի պսևդո-պատահական ֆունկցիա, ինչպիսին է Math.random()-ը։ Տարբերակ 7-ը սկզբում տեղադրում է 48-բիթանոց միլիվայրկյանային ժամանակային դրոշմ, այնուհետև 12-բիթանոց հաշվիչ, որն աճում է նույն միլիվայրկյանի ընթացքում, այնուհետև 62 պատահական բիթ. սա դասավորման մեթոդն է, որը նկարագրված է RFC 9562-ում։ Այդ հաշվիչն է պատճառը, որ հազարավորներից բաղկացած խմբաքանակը ստացվում է հերթականությամբ, այլ ոչ թե խառնված։ Տարբերակ 1-ը համատեղում է ժամանակային դրոշմը պատահական հանգույցի նույնացուցիչի հետ, որի խմբային հեռարձակման բիթը միացված է, ուստի այն երբեք չի կրում ձեր ցանցային քարտի հասցեն այնպես, ինչպես 1990-ականների բնօրինակ իրականացումներն էին անում։ Տարբերակներ 3-ը և 5-ը ընդհանրապես պատահական չեն. նրանք միասին հեշավորում են անվանատարածքը և անունը՝ օգտագործելով համապատասխանաբար MD5 և SHA-1, և այդ հեշավորումը նույնպես տեղի է ունենում ձեր սարքում։ Ոչինչ չի ուղարկվում սերվերին, ոչինչ չի գրանցվում, և երբ էջը բեռնվում է, այն շարունակում է աշխատել անգամ առանց ինտերնետ կապի։

«Տարբերակ»-ն այն դաշտն է, որը որոշում է մնացած ամեն ինչը։ Տարբերակ 4-ը 122 պատահական բիթ է և չունի որևէ կառուցվածք՝ լռելյայն տարբերակն է և ճիշտ պատասխանը, երբ նույնացուցիչը պետք է լինի միայն եզակի։ Տարբերակ 7-ը պահպանում է 62 պատահական բիթ, բայց սկսվում է ստեղծման ժամանակով, այնպես որ դրանց բազմությունը դասավորվում է ստեղծման հերթականությամբ. հենց դա է պատճառը, որ այն պետք է ընտրել, երբ նույնացուցիչը դառնալու է տվյալների բազայի բանալի։ Տարբերակ 1-ը բնօրինակ ժամանակի վրա հիմնված սխեման է, որն այստեղ պահպանվել է այն համակարգերի համար, որոնք դեռ պահանջում են այն։ Տարբերակներ 3-ը և 5-ը տարօրինակ զույգ են. դրանք դետերմինիստական են, ինչը նշանակում է, որ նույն մուտքային տվյալները միշտ տալիս են նույն նույնացուցիչը, և դրանք պահանջում են երկու լրացուցիչ դաշտ՝ «Անվանատարածք», որը ստանդարտ DNS, URL, OID և X.500 տարածքներից մեկն է կամ ձեր սեփական «Հատուկ» տարածքը, և «Անուն», որը նույնականացվող տողն է։ Տրամադրեք v5-ին URL անվանատարածք և https://example.com/a, և դուք կստանաք նույն UUID-ն այսօր, վաղը և մեկ ուրիշի սարքի վրա։ Այդ պատճառով, «Քանակ» դաշտը անհետանում է, երբ ընտրվում է v3 կամ v5. մեկ դետերմինիստական արժեքի հազար օրինակը կլինի պարզապես մեկ դետերմինիստական արժեքի հազար օրինակ։ Բոլոր այլ տարբերակների համար «Քանակ»-ը կարող է լինել 1-ից մինչև 1000։

Չորս անջատիչ փոխում են արդյունքի տեսքը՝ չփոխելով տակը գտնվող 128 բիթերը։ «Մեծատառ»-ը տպում է տասնվեցական նիշերը մեծ տառերով, «Առանց գծիկների»-ն տալիս է կոմպակտ 32 նիշանոց ձևաչափը, որը նախընտրում են որոշ սյունակներ և ֆայլերի անուններ, իսկ «Ձևավոր փակագծեր»-ը արժեքը վերցնում է { }-ի մեջ՝ այն ձևով, ինչպես Windows-ի և .NET-ի աշխարհը դա անվանում է GUID։ «Ընդլայնված Կարգավորումներ»-ի տակ գտնվող urn:uuid:-ն ավելացնում է նախածանց, որն այն դարձնում է ֆորմալ URN։ Երբ այն միացված է, անջատում է «Ձևավոր փակագծեր» և «Առանց գծիկների» տարբերակները, քանի որ ստանդարտը թույլ է տալիս ճիշտ մեկ URN ձևաչափ, որը կանոնական գծիկներով ձևն է։ «Պատճենման ձևաչափ»-ը որոշում է, թե ինչպես է խմբաքանակը միացվում, երբ այն վերցնում եք. մեկական յուրաքանչյուր տողում, բաժանված ստորակետերով, կամ յուրաքանչյուր արժեքը չակերտների մեջ՝ վերջում ստորակետով, ինչը թույլ է տալիս այն անմիջապես տեղադրել ծրագրային կոդի զանգվածի մեջ։ Արդյունքի տակ կա մի տող, որը զեկուցում է պատահականության մասին բիթերով՝ 122 v4-ի համար, 62 v7-ի համար, իսկ v7-ի համար՝ խմբաքանակի առաջին նույնացուցիչում գաղտնագրված ժամանակային դրոշմը, այնպես որ արժեքի ներսում ժամանակը տեսանելի է, ոչ թե ենթադրվող։ «Պատճենել բոլորը» և «Պահպանել ֆայլում» կոճակները երկուսն էլ հարգում են «Պատճենման ձևաչափ»-ը։ «Պատմություն»-ը պահում է ձեր վերջին 10 խմբաքանակները ձեր բրաուզերում. սեղմեք մեկի վրա՝ այն վերադարձնելու համար, պատճենեք կամ ջնջեք մեկ գրառում, կամ մաքրեք ամեն ինչ։ «Մաքրել»-ը դատարկում է արդյունքը և անփոփոխ է թողնում ձեր կարգավորումները, և 50 նույնացուցիչից հետո ցանկը դառնում է մեկ ոլորվող բլոկ՝ հիսուն առանձին տողերի փոխարեն։

Այս էջի ամենակարևոր բանը v4-ի և v7-ի միջև եղած տարբերությունն է որպես հիմնական բանալի, և դա ճաշակի հարց չէ։ Տվյալների բազայի ինդեքսները ծառեր են, որոնք պահվում են դասավորված կարգով, և թե որտեղ է ընկնում նոր բանալին այդ հերթականության մեջ, որոշում է, թե որքան աշխատանք է պահանջում ավելացումը։ v4 բանալին պատահական է, ուստի հաջորդական ավելացումները հայտնվում են ինդեքսի միմյանց հետ կապ չունեցող անկյուններում. էջերը, որոնք լիքն էին, բաժանվում են, ծառի այն մասերը, որոնք տվյալների բազան պահում է հիշողության մեջ, հազվադեպ են այն մասերը, որոնք հաջորդ ավելացմանն անհրաժեշտ են, և արդյունքում ինդեքսը դառնում է ավելի մեծ ու հատվածավորված, քան արդարացնում են դրա ցույց տված տողերը։ v7 բանալին սկսվում է ընթացիկ միլիվայրկյանով, ուստի հաջորդական ավելացումները հայտնվում են իրար կողքի ծառի աջ եզրում, ինչն այն օրինաչափությունն է, որը ստեղծում է ավտոմատ աճող ամբողջ թիվը, և հենց այդ օրինաչափության շուրջ են կառուցվել ինդեքսի կառուցվածքները։ Սա է ողջ փոխզիջումը. v7-ը տալիս է հաջորդական բանալու ավելացման վարքագիծ՝ պահպանելով այն հատկությունը, որի համար դուք ի սկզբանե ընտրել եք UUID-ներ, այն է՝ յուրաքանչյուրը կարող է ստեղծել այն առանց սերվերին հարցնելու։ Դրա գինն այն է, որ ստեղծման ժամանակն այժմ ընթեռնելի է նույնացուցիչի ներսում, և արդյոք դա կարևոր է, թե ոչ, ձեր տվյալների մասին հարց է, այլ ոչ թե ձևաչափի։

Ոչինչ երբևէ չի ստուգում UUID-ի եզակիությունը. դրա չափն է դրա երաշխիքը։ Գոյություն չունի ռեգիստր, սերվերի հետ կապ, որոնում՝ գեներատորն արտադրում է թիվ և հանձնում այն, և պատճառը, որ դրանցից երկուսը չեն բախվում, պարզապես այն է, որ կան 2^122 հնարավոր v4 արժեքներ՝ մոտ 5.3 × 10^36։ Ծննդյան խնդիրը սա գնահատելու ամենաազնիվ ճանապարհն է. ձեզ անհրաժեշտ կլիներ մոտ 2.7 × 10^18 նույնացուցիչ, մինչև որևէ երկուսի համընկնելու հավանականությունը կկազմեր 50%, ինչը հավասար է 86 տարի շարունակ ամեն վայրկյան մեկ միլիարդ նոր UUID-ի ստեղծման։ Արժե ճշգրիտ լինել այն հարցում, թե ինչ է դա խոստանում և ինչ՝ ոչ։ Դա վիճակագրական երաշխիք է, ոչ թե թվաբանական, և այն գործում է միայն այնքան ժամանակ, քանի դեռ հիմքում ընկած պատահականությունն իրական է. վատ սկզբնավորված գեներատորը կամ վիրտուալ մեքենան, որը կլոնավորվել է իր էնտրոպիայի ավազանի հետ միասին, կոտրում է այն այնպես, որ ձևաչափը չի կարող հայտնաբերել։ Տարբերակ 7-ն ավելի է նեղացնում այս հարցը. մեկ միլիվայրկյանի ընթացքում գեներատորը ընդհանրապես չի կարող կրկնել ինքն իրեն, քանի որ հաշվիչն աճում է՝ զառ նետելու փոխարեն, և անկախ գեներատորների միջև աշխատում են 62 պատահական բիթերը։

UUID-ն նույնացուցիչ է, ոչ թե գաղտնաբառ։ Տարբերակ 4-ը անկանխատեսելի է, և դա գայթակղում է մարդկանց վերաբերվել դրան որպես գաղտնիքի՝ որպես գաղտնաբառի վերականգնման հղում, անկանխատեսելի URL, սեսիայի թոքեն, API բանալի։ Անկանխատեսելիությունն իրական է, բայց գաղտնիությունը այն բանի հատկությունն է, թե ինչպես են վարվում արժեքի հետ, իսկ նույնացուցիչների հետ կանխամտածված անզգույշ են վարվում. դրանք հայտնվում են URL-ներում, որոնք պահվում են բրաուզերի պատմության, սերվերի տեղեկամատյանների, referrer վերնագրերի և վերլուծական համակարգերի մեջ, ինչպես նաև պատճենվում են զրույցների հաղորդագրություններում։ Մյուս տարբերակներն էլ ավելի վատ թեկնածուներ են։ Տարբերակ 1-ը և տարբերակ 7-ը երկուսն էլ գաղտնագրում են ստեղծման պահը, ուստի յուրաքանչյուր ոք, ով տիրապետում է դրան, մոտավորապես գիտի, թե երբ է այն ստեղծվել, և կարող է նեղացնել դրա հետ ստեղծված ամեն ինչի շրջանակը։ Տարբերակներ 3-ը և 5-ը կանխամտածված դետերմինիստական են. էլեկտրոնային հասցեի v5 UUID-ն հեշավորված գաղտնիք չէ, այն մի արժեք է, որը նույն հասցեով ցանկացած մարդ կարող է հաշվարկել մեկ վայրկյանում։ Օգտագործեք UUID-ն ինչ-որ բան անվանելու համար։ Երբ արժեքը պետք է անհայտ մնա, օգտագործեք գաղտնաբառերի գեներատոր կամ գաղտնիքների համար ստեղծված գրադարանի թոքեն։

Ինչու՞ ընտրել այս UUID գեներատորը.

UUID-ները հայտնվում են այնտեղ, որտեղ ինչ-որ բան պետք է անվանվի, նախքան որևէ մեկը կկարողանա հաստատել, որ անունն ազատ է։ Հավելվածի կոդը ստեղծում է դրանք այն տողերի համար, որոնք պատրաստվում է ավելացնել, այնպես որ օբյեկտը ունի ինքնություն նախքան տվյալների բազա հասնելը, իսկ հաճախորդը կարող է հղում կատարել դրան, մինչդեռ գրանցումը դեռ ընթացքի մեջ է։ Բաշխված համակարգերը դրանց վրա ավելի շատ են հենվում. մի քանի ծառայություններ, որոնք գրում են մեկ աղյուսակում, ինքնաթիռում օֆլայն գրառումներ ստեղծող բջջային հաճախորդ, հերթ, որը պետք է ճանաչի արդեն իսկ մշակված հաղորդագրությունը՝ սրանցից ոչ մեկը չի կարող սպասել իր հերթին ընդհանուր հաշվիչի համար։ Տարբերակ 5-ը ծածկում է մեկ այլ կարիք, այն է՝ կայուն նույնացուցիչ, որը ստացվում է ձեր ունեցած ինչ-որ բանից. միևնույն փաստաթուղթը, միևնույն URL-ը կամ միևնույն հաշիվը միշտ քարտեզագրվում են նույն UUID-ին, ուստի ներմուծումը կարող է աշխատել երկու անգամ՝ առանց որևէ բան կրկնօրինակելու։ Այլուր դրանք պարզապես այն ձևաչափն են, որը համակարգը պահանջում է՝ տեղեկամատյաններում ու հետքերում միահյուսված կապակցման նույնացուցիչ, ֆայլի անուն, որը չի բախվի, երբ հազարավոր օգտատերերի վերբեռնումները հայտնվեն մեկ պահոցում, Windows-ի ռեգիստրի բանալի, թեստային տվյալներ, որոնք պետք է իրական տվյալների նման լինեն։

Մի քանի անկեղծ սահմանափակումներ արժե իմանալ։ Մեկ խմբաքանակը մեկ տարբերակ է. «Տարբերակ»-ում ընտրված արժեքը վերաբերում է դրա մեջ գտնվող ամեն ինչին, ուստի v4-ների և v7-ների հերթականությունները երկու առանձին խմբաքանակներ են։ Սա գեներատոր է, այլ ոչ թե տեսուչ. UUID տեղադրելը՝ դրա տարբերակը կամ ժամանակային դրոշմը կարդալու համար այն չէ, ինչ այս էջն անում է։ «Պահպանել ֆայլում»-ը գրում է պարզ տեքստային ֆայլ՝ CSV կամ JSON-ի փոխարեն։ Տարբերակ 7-ը բացահայտ ցույց է տալիս, թե երբ է այն ստեղծվել՝ մինչև միլիվայրկյանի ճշտությամբ, ինչը իրական փոխզիջում է, այլ ոչ թե թերություն, իսկ տարբերակ 1-ը արտահոսում է ժամանակը նույն ձևով։ Եթե դա խնդիր է ձեր տվյալների համար, տարբերակ 4-ը այն տարբերակն է, որը ոչ ոքի ոչինչ չի ասում։ Ստանդարտի երկու հատուկ արժեքներ տարբերակներ չեն և հետևաբար որպես ընտրանքներ չեն ներկայացված «Տարբերակ»-ում, բայց դուք կարող եք դրանք պատճենել այստեղից. զրոյական UUID՝ 00000000-0000-0000-0000-000000000000, և առավելագույն UUID՝ ffffffff-ffff-ffff-ffff-ffffffffffff։ Այս էջի ամեն ինչ հետևում է RFC 9562-ին, այն ստանդարտին, որը 2024 թվականին փոխարինեց RFC 4122-ին, ուստի արդյունքն ընդունվում է ցանկացած գրադարանի, տվյալների բազայի կամ API-ի կողմից, որն ընդհանրապես աշխատում է UUID-ների հետ։ Այդ սահմանափակումների ներքո երաշխիքը ուժեղ է. յուրաքանչյուր նույնացուցիչ կառուցված է ստանդարտին համապատասխան, գաղտնագրականորեն անվտանգ պատահականությունից, ձեր սեփական համակարգչի վրա, և ուրիշ ոչ ոք այն երբեք չի տեսնում։

FAQ

Ինչպե՞ս ստեղծել UUID։

Ընտրեք տարբերակ «Տարբերակ» դաշտում, սահմանեք քանակը «Քանակ»-ում և սեղմեք «Ստեղծել»։ Էջը բացվում է տարբերակ 4-ի մեկ նույնացուցիչով, ինչն անհրաժեշտ է նախագծերի մեծ մասին, այնպես որ սովորական UUID-ն հասանելի է ընդամենը մեկ սեղմումով։ Յուրաքանչյուր արժեք հայտնվում է իր պատճենման կոճակով, իսկ «Պատճենել բոլորը» վերցնում է ողջ խմբաքանակը միանգամից։

Ո՞րն է UUID v4-ի և v7-ի տարբերությունը։

Տարբերակ 4-ը 122 պատահական բիթ է՝ առանց որևէ կառուցվածքի, ուստի դրանցից որևէ երկուսը միմյանց հետ որևէ կապ չունեն։ Տարբերակ 7-ը առաջին 48 բիթը ծախսում է այն միլիվայրկյանի վրա, երբ այն ստեղծվել է, ավելացնում է հաշվիչ և 62 պատահական բիթ, և հետևաբար դասավորվող է. խմբաքանակը ստացվում է ստեղծման հերթականությամբ։ Օգտագործեք v4, երբ նույնացուցիչը միայն պետք է եզակի լինի, և v7, երբ այն նաև տվյալների բազայի բանալի է լինելու։

Ո՞ր UUID տարբերակը պետք է օգտագործեմ։

Տարբերակ 4, քանի դեռ չունեք մեկ ուրիշը ընտրելու պատճառ։ Ընտրեք տարբերակ 7, եթե նույնացուցիչը դառնալու է հիմնական բանալի և ավելացման արդյունավետությունը կարևոր է, տարբերակ 5, եթե ձեզ անհրաժեշտ է, որ նույն մուտքագրումը միշտ տա նույն նույնացուցիչը, և տարբերակ 1 միայն այն դեպքում, եթե համակարգը, որի հետ պետք է կապ հաստատեք, հատուկ պահանջում է դա։ Տարբերակ 3-ը տարբերակ 5-ն է՝ SHA-1-ի փոխարեն MD5-ով և գոյություն ունի համատեղելիության համար։

Արդյո՞ք ստեղծված UUID-ները իսկապես պատահական և անվտանգ են։

Պատահականությունը գաղտնագրականորեն անվտանգ է. այն գալիս է ձեր բրաուզերի Web Crypto API-ից՝ crypto.randomUUID() կամ crypto.getRandomValues() միջոցով, այլ ոչ թե Math.random()-ից։ Անկանխատեսելիության իմաստով անվտանգ լինելը տարբերվում է գաղտնի լինելուց. UUID-ն նույնացուցիչ է, և այն չպետք է օգտագործվի որպես գաղտնաբառ, սեսիայի թոքեն կամ API բանալի։

Կարո՞ղ եմ միանգամից շատ UUID-ներ ստեղծել։

Այո, մինչև 1000 հատ միանգամից։ Սահմանեք «Քանակ» և սեղմեք «Ստեղծել»։ Հիսուն արժեքից հետո արդյունքը դառնում է մեկ ոլորվող բլոկ՝ տողերի երկար ցանկի փոխարեն։ «Պատճենել բոլորը» և «Պահպանել ֆայլում»-ը վերցնում են ամբողջ խմբաքանակը՝ միացված այնպես, ինչպես ասում է «Պատճենման ձևաչափ»-ը՝ մեկը յուրաքանչյուր տողում, ստորակետով առանձնացված, կամ չակերտներում՝ զանգվածի մեջ տեղադրելու համար։

Ինչու՞ են v3-ը և v5-ը ամեն անգամ տալիս նույն UUID-ն։

Որովհետև դա նրանց նպատակն է։ Տարբերակներ 3-ը և 5-ը դետերմինիստական են. դրանք հեշավորում են ձեր տրամադրած անվանատարածքն ու անունը, ուստի նույն մուտքագրումները միշտ տալիս են նույն նույնացուցիչը՝ ցանկացած սարքի և ցանկացած լեզվի մեջ։ Սա օգտակար է դարձնում դրանք ձեր ունեցած որևէ բանից կայուն նույնացուցիչ ստանալու համար, և դա է նաև պատճառը, որ դրանք ընտրելիս «Քանակ» դաշտը թաքնված է։

Ի՞նչ են Անվանատարածքը և Անունը, և ո՞ր անվանատարածքը պետք է ընտրեմ։

Դրանք երկու մուտքագրումներն են, որոնցից հաշվարկվում է տարբերակ 3 կամ տարբերակ 5 UUID-ն։ «Անվանատարածք»-ը նշում է, թե ինչ տեսակի բան է անունը՝ DNS հոսթերի անունների համար, URL հասցեների համար, OID և X.500 դիրեկտորիաների սխեմաների համար, կամ «Հատուկ» եթե ցանկանում եք տրամադրել ձեր սեփական անվանատարածքի UUID-ն, որը սովորական ընտրություն է հավելվածի ներսում։ «Անուն»-ը հենց տողն է։ Տարբեր անվանատարածքները նույն անվան համար տալիս են բոլորովին տարբեր արդյունքներ, ինչը հենց դրանք ունենալու իմաստն է։

Ինչու՞ է UUID v7-ը ավելի լավ տվյալների բազայի հիմնական բանալու համար, քան v4-ը։

Այն պատճառով, թե որտեղ են արժեքներն ընկնում ինդեքսում։ Ինդեքսը պահվում է դասավորված կարգով, և պատահական v4 բանալին հայտնվում է դրա ցանկացած տեղում, ուստի ավելացումները բաժանում են էջերը ամբողջ ծառի մեջ, իսկ հիշողության մեջ պահվող մասերը հազվադեպ են այն մասերը, որոնք անհրաժեշտ են հաջորդիվ։ v7 բանալին սկսվում է ընթացիկ միլիվայրկյանով, ուստի հաջորդական ավելացումները միասին հայտնվում են ինդեքսի վերջում, ինչպես որ վարվում է հաջորդական ամբողջ թվով բանալին՝ միաժամանակ թույլ տալով ցանկացած ծառայության ստեղծել նույնացուցիչ առանց կենտրոնական հաշվիչին հարցնելու։

Կարո՞ղ են արդյոք երկու UUID-ներ երբևէ նույնը լինել։

Սկզբունքորեն այո, գործնականում՝ ոչ, և արժե իմանալ որը։ Ոչինչ չի ստուգում եզակիությունը. գոյություն ունի 2^122 հնարավոր տարբերակ 4 արժեք՝ մոտ 5.3 × 10^36, և ձեզ անհրաժեշտ կլինի մոտ 2.7 × 10^18 դրանցից՝ 86 տարվա ընթացքում վայրկյանում մեկ միլիարդ, նախքան մեկ բախման 50% հավանականություն ունենալը։ Երաշխիքը վիճակագրական է, ոչ թե բացարձակ, և այն կախված է նրանից, որ պատահականությունը լինի իրական, ինչի պատճառով այս գեներատորն օգտագործում է Web Crypto API՝ սովորական պսևդո-պատահական ֆունկցիայի փոխարեն։

Կարո՞ղ եմ օգտագործել UUID-ն որպես գաղտնաբառ, API բանալի կամ սեսիայի թոքեն։

Ոչ, և սա այն սխալն է, որն ամենաշատն է արժենում։ Տարբերակ 4 UUID-ն անկանխատեսելի է, սակայն նույնացուցիչները մշակվում են այնպես, կարծես դրանք հրապարակային են. դրանք հայտնվում են URL-ներում, բրաուզերի պատմության, սերվերի տեղեկամատյանների, referrer վերնագրերի և վերլուծական գործիքների մեջ։ Տարբերակ 1-ը և 7-ը լրացուցիչ բացահայտում են, թե երբ են դրանք ստեղծվել, իսկ տարբերակ 3-ը և 5-ը կարող են վերահաշվարկվել ցանկացած մեկի կողմից, ով գիտի մուտքային տվյալները։ Ցանկացած բանի համար, որը պետք է մնա գաղտնի, օգտագործեք գաղտնաբառերի գեներատոր կամ գաղտնիքների համար նախատեսված գրադարանի թոքեն։

Արդյո՞ք UUID v7-ը բացահայտում է, թե երբ է ստեղծվել։

Այո, մինչև միլիվայրկյանի ճշտությամբ, և դա ի սկզբանե նախատեսված է, ոչ թե բացթողում. ժամանակային դրոշմն է, որ դարձնում է v7-ը դասավորվող։ Արդյունքի տակ գտնվող տողը ձեզ ցույց է տալիս ժամանակը, որը կոդավորված է խմբաքանակի առաջին արժեքում, այնպես որ դուք հստակ կարող եք տեսնել, թե ինչն է բացահայտվում։ Տարբերակ 1-ը նույնպես ունի ժամանակային դրոշմ։ Եթե ստեղծման ժամանակն այն է, ինչ դուք չեք ցանկանում հրապարակել, տարբերակ 4-ն այն տարբերակն է, որը ոչ ոքի ոչինչ չի ասում։

Արդյո՞ք UUID v1-ը ցույց է տալիս իմ MAC հասցեն։

Ոչ այստեղ։ Բնօրինակ սխեման օգտագործում էր սարքի ցանցային քարտի հասցեն որպես հանգույցի դաշտ, որտեղից էլ գալիս է v1-ի հեղինակությունը, բայց ստանդարտը նաև թույլ է տալիս պատահական հանգույցի նույնացուցիչ՝ նշված խմբային հեռարձակման բիթով, և հենց դա է ստեղծում այս գեներատորը։ Ձեր սարքավորման հասցեն երբեք չի կարդացվում և երբեք չի հայտնվում արդյունքում։

Ի՞նչ են փոխում Մեծատառ, Առանց գծիկների, Ձևավոր փակագծեր և urn:uuid: տարբերակները։

Միայն ներկայացումը. տակը գտնվող 128 բիթերը միանգամայն նույնն են յուրաքանչյուր ձևում։ «Մեծատառ»-ը տպում է տասնվեցական նիշերը որպես մեծ տառեր, «Առանց գծիկների»-ն տալիս է կոմպակտ 32 նիշանոց տարբերակը, «Ձևավոր փակագծեր»-ը արժեքը վերցնում է { }-ի մեջ, այնպես, ինչպես Windows-ը և .NET-ը գրում են GUID-ը, իսկ urn:uuid:-ն ավելացնում է նախածանց, որն այն դարձնում է ֆորմալ URN։ Երբ urn:uuid:-ն միացված է, այն անջատում է մյուս երկուսը, քանի որ ստանդարտը սահմանում է ճիշտ մեկ URN ձևաչափ, որը կանոնական գծիկներով ձևն է։