Jenereta ya UUID
Tengeneza UUID za nasibu za toleo 4, kuanzia moja hadi mia moja kwa wakati mmoja, na uzinakili kama orodha. Zinatoka kwenye jenereta ya nasibu ya kivinjari chako iliyo salama kikriptografia, na kikaguzi kinakuonyesha toleo na lahaja ya UUID yoyote unayobandika.
Herufi 0 · maneno 0 · mistari 0
Inafanya kazi kabisa ndani ya kichupo hiki cha kivinjari. Maandishi yako hayapakiwi wala kuhifadhiwa.
Matoleo ya UUID
Toleo ni tarakimu ya kwanza ya kundi la tatu; lahaja husimbwa katika tarakimu ya kwanza ya kundi la nne (8, 9, a au b kwa UUID za RFC). Mifano ni vekta za majaribio kutoka RFC 9562.
| Toleo | Imejengwa kutoka | Mfano |
|---|---|---|
| v1 | Muhuri wa muda wa Gregori + kitambulisho cha nodi (MAC) | c232ab00-9414-11ec-b3c8-9f6bdeced846 |
| v3 | Hash ya MD5 ya namespace + jina | 5df41881-3aed-3515-88a7-2f4a814cf09e |
| v4 | Biti 122 nasibu | 919108f7-52d1-4320-9bac-f847db4148a8 |
| v5 | Hash ya SHA-1 ya namespace + jina | 2ed6657d-e927-568b-95e1-2665a8aea6a2 |
| v6 | Muhuri wa muda wa v1 uliopangwa upya ili vitambulisho vipangike kwa muda | 1ec9414c-232a-6b00-b3c8-9f6bdeced846 |
| v7 | Milisekunde za Unix + biti nasibu, inaweza kupangwa | 017f22e2-79b0-7cc3-98c4-dc0c0c07398f |
| v8 | Muundo maalum unaofafanuliwa na programu | 2489e9ad-2ee2-8e00-8ec9-32d5f69181c0 |
UUID ni nini na jinsi ya kuisoma
UUID (kitambulisho cha kipekee duniani kote, kinachoitwa GUID katika programu za Microsoft) ni namba ya biti 128 inayoandikwa kama tarakimu 32 za hexadesimali katika makundi ya 8-4-4-4-12, kwa mfano f47ac10b-58cc-4372-a567-0e02b2c3d479. Ilisanifishwa katika RFC 4122 mwaka 2005; Mei 2024 hati hiyo ilibadilishwa na RFC 9562, inayohifadhi matoleo ya zamani na kuongeza matatu mapya. Nafasi mbili ni maalum: tarakimu ya kwanza ya kundi la tatu ni toleo (4 katika 4372), na tarakimu ya kwanza ya kundi la nne inaonyesha lahaja, ambayo ni 8, 9, a au b kwa kila UUID inayofuata RFC.
Toleo la 4 hujaza biti 122 zilizobaki kwa data nasibu. Nafasi hiyo ni kubwa mno kiasi kwamba ungehitaji kutengeneza takriban quintilioni 2.7 (2.7 × 10¹⁸) ili kupata nafasi ya 50% ya nakala moja inayofanana, ndiyo maana mifumo hutengeneza vitambulisho vya v4 kwa kujitegemea kwenye mashine nyingi bila uratibu. Ukurasa huu unatumia crypto.randomUUID, au crypto.getRandomValues pale ambapo haipo, kamwe si Math.random, ambayo matokeo yake hayakusanifiwa kutotabirika. Chaguo za Herufi kubwa na Bila vistari hubadilisha muundo tu; thamani ni ile ile, na vichanganuzi vingi hukubali herufi kubwa au ndogo.
v4, v7 na matoleo mengine
Matoleo ya 1 na 6 hujengwa kutoka muhuri wa wakati na kitambulisho cha nodi, ambacho awali kilikuwa anwani ya MAC ya kompyuta, hivyo hufichua mahali na wakati kitambulisho kilipotengenezwa. Matoleo ya 3 na 5 huchakata nafasi ya majina na jina kwa MD5 au SHA-1, kwa hiyo ingizo lile lile hutoa UUID ile ile kila mara. Toleo la 8 ni mpangilio huru kwa mifumo maalum. Toleo jipya muhimu zaidi ni toleo la 7: huanza na muhuri wa wakati wa Unix wa biti 48 kwa milisekunde na kujaza biti zilizobaki kwa nasibu, hivyo vitambulisho hupangika kwa wakati wa kutengenezwa.
Mpangilio huo ndio sababu ya kuzingatia v7 kwa funguo kuu za hifadhidata. Funguo nasibu za v4 hutawanyika kote kwenye faharasa ya B-tree, zikigawanya kurasa na kuathiri ufanisi wa kache jedwali linapokua, ilhali funguo za v7 hufika kwa mpangilio wa kupanda kama safu ya auto-increment, na bado zinaweza kutengenezwa bila kihesabu cha kati. Chagua v4 unapotaka kitambulisho kisichofichua chochote, ikiwemo wakati kilipotengenezwa; chagua v7 pale kasi ya kuingiza na mpangilio wa wakati vinapohitajika. UUID ni kitambulisho, si siri: kwa nenosiri na siri za API tumia kitengeneza nenosiri maalum. Visimbaji na vikaguzi zaidi viko kwenye zana za wasanidi.
Maswali yanayoulizwa mara kwa mara
- Je, UUID mbili zilizotengenezwa kwa nasibu zinaweza kufanana?
- Kinadharia ndiyo, kiutendaji hapana. Kwa biti 122 nasibu, hata UUID bilioni moja za v4 kwa sekunde kwa takriban miaka 86 zingetoa nafasi ya karibu 50% tu ya mgongano mmoja, ikiwa chanzo cha nasibu ni salama.
- Kuna tofauti gani kati ya UUID na GUID?
- Hakuna tofauti ya msingi. GUID ni jina la Microsoft kwa kitambulisho kile kile cha biti 128. Zana zingine za Microsoft huonyesha GUID kwa herufi kubwa au ndani ya mabano mawimbi, na kikagua hapa hukubali hivyo.
- Ninawezaje kujua UUID ni ya toleo gani?
- Angalia tarakimu ya kwanza ya kundi la tatu: 4 maana yake nasibu, 7 maana yake imepangwa kwa wakati, 1 maana yake muhuri wa wakati pamoja na nodi. Ibandike kwenye Kagua UUID uone toleo na lahaja.
- Je, nitumie UUIDv7 badala ya v4 kwa funguo za hifadhidata?
- Mara nyingi ndiyo. Funguo za v7 hupangwa kwa wakati, jambo linalofanya faharasa za B-tree ziwe fupi na uingizaji uwe wa haraka. Endelea na v4 ikiwa wakati wa kutengenezwa uliomo kwenye kitambulisho cha v7 unapaswa kubaki siri.
- Je, ni salama kutumia UUID kama tokeni ya kuweka upya nenosiri?
- UUID ya v4 kutoka kitengeneza salama ina biti 122 nasibu, ambazo zinatosha kutotabirika, lakini maktaba nyingi hutoa kazi maalum za tokeni zenye muda wa kuisha. Kamwe usitumie matoleo yanayotegemea wakati kama v1 au v7 kama siri.