UUID Generator Tool for Creating Unique Identifiers
Generer Universelt Unike Identifikatorer (UUID-er) for ulike applikasjoner. Lag både versjon 1 (tidsbasert) og versjon 4 (tilfeldig) UUID-er for bruk i distribuerte systemer, databaser og mer.
UUID-generator
Generert UUID
Dokumentasjon
UUID-generator
Innledning
En Universelt Unik Identifikator (UUID) er et 128-bit tall som brukes til å identifisere informasjon i datasystemer. UUID-er er standardisert av Open Software Foundation (OSF) som en del av Distributed Computing Environment (DCE). Disse identifikatorene er designet for å være unike på tvers av både rom og tid, noe som gjør dem ideelle for ulike applikasjoner i distribuerte systemer og utover.
Dette UUID-generatorverktøyet lar deg opprette både versjon 1 (tidsbasert) og versjon 4 (tilfeldig) UUID-er. Disse identifikatorene er nyttige i ulike scenarier der unik identifikasjon er nødvendig, som database-nøkler, distribuerte systemer og nettverksprotokoller.
Hvordan UUID-er fungerer
UUID-struktur
En UUID er vanligvis representert som 32 heksadesimale sifre, vist i fem grupper adskilt av bindestreker, i formen 8-4-4-4-12 for totalt 36 tegn (32 alfanumeriske tegn og 4 bindestreker). For eksempel:
1550e8400-e29b-41d4-a716-446655440000
2
De 128 bitene av en UUID er delt inn i spesifikke felt, hver med forskjellig informasjon avhengig av UUID-versjonen:
- 32 biter for time_low-feltet
- 16 biter for time_mid-feltet
- 16 biter for time_hi_and_version-feltet
- 8 biter for clock_seq_hi_and_reserved-feltet
- 8 biter for clock_seq_low-feltet
- 48 biter for node-feltet
Her er et diagram som illustrerer UUID-strukturen:
UUID-versjoner
Det finnes flere versjoner av UUID-er, hver med sin egen genereringsmetode:
- Versjon 1 (Tidsbasert): Bruker den nåværende tidsstempelet og MAC-adressen til datamaskinen.
- Versjon 2 (DCE-sikkerhet): Ligner på versjon 1, men inkluderer en lokal domeneidentifikator.
- Versjon 3 (Navn-basert, MD5): Generert ved å hash en navneromidentifikator og navn.
- Versjon 4 (Tilfeldig): Generert ved hjelp av et tilfeldig eller pseudo-tilfeldig tall.
- Versjon 5 (Navn-basert, SHA-1): Ligner på versjon 3, men bruker SHA-1 hashing.
Dette verktøyet fokuserer på å generere versjon 1 og versjon 4 UUID-er.
Formel
Versjon 1 UUID-generering
Versjon 1 UUID-er genereres ved hjelp av følgende komponenter:
- Tidsstempel: En 60-bit verdi som representerer antall 100-nanosekund intervaller siden 15. oktober 1582 (datoen for den gregorianske reformen av den kristne kalenderen).
- Klokkesekvens: En 14-bit verdi som brukes for å unngå duplikater i tilfelle klokken settes tilbake.
- Node: En 48-bit verdi, vanligvis avledet fra MAC-adressen til datamaskinen.
Formelen for å generere en versjon 1 UUID kan uttrykkes som:
1UUID = (tidsstempel * 2^64) + (klokkesekvens * 2^48) + node
2
Versjon 4 UUID-generering
Versjon 4 UUID-er genereres ved hjelp av en kryptografisk sterk tilfeldig tallgenerator. Formelen er ganske enkelt:
1UUID = tilfeldig_128-bit_nummer
2
Med spesifikke biter satt for å indikere versjonen (4) og varianten.
Bruksområder
UUID-er har mange bruksområder på tvers av ulike domener innen datavitenskap og programvareutvikling:
-
Database-nøkler: UUID-er brukes ofte som primærnøkler i databaser, spesielt i distribuerte systemer der flere noder kan generere poster samtidig.
-
Distribuerte systemer: I store distribuerte systemer hjelper UUID-er med å unikt identifisere ressurser, transaksjoner eller hendelser på tvers av flere noder eller datasentre.
-
Innholdsadressere: UUID-er kan brukes til å lage unike identifikatorer for innhold i innholdsadressable lagringssystemer.
-
Sesjonsadministrasjon: Nettapplikasjoner bruker ofte UUID-er til å administrere brukerøkter, og sikrer at hver økt har en unik identifikator.
-
IoT-enhetsidentifikasjon: I Internet of Things (IoT) applikasjoner kan UUID-er brukes til å unikt identifisere individuelle enheter i et nettverk.
Alternativer
Selv om UUID-er er mye brukt, finnes det alternative tilnærminger for å generere unike identifikatorer:
-
Auto-inkrementerende ID-er: Enkle og vanlig brukt i enkelt-database systemer, men ikke egnet for distribuerte miljøer.
-
Tidsstempel-baserte ID-er: Kan være nyttige for tidsbestemte data, men kan møte kollisjonsproblemer i høy-konkurranse scenarier.
-
Snowflake ID-er: Utviklet av Twitter, disse ID-ene kombinerer tidsstempel og arbeidernummer for å generere unike ID-er i distribuerte systemer.
-
ULID (Universally Unique Lexicographically Sortable Identifier): Et nyere alternativ som har som mål å være mer menneskevennlig og sortert enn UUID-er.
Historie
Konseptet med UUID-er ble først introdusert i Apollo Network Computing System og senere standardisert av Open Software Foundation (OSF) som en del av Distributed Computing Environment (DCE) på 1990-tallet. Den første spesifikasjonen ble publisert i 1997 som ISO/IEC 11578:1996 og senere revidert i 2005 som en del av ISO/IEC 9834-8:2005.
Viktige milepæler i UUID-historien:
- 1980-tallet: Apollo Computer utvikler UUID-konseptet for sitt Network Computing System.
- 1997: Første UUID-spesifikasjon publisert som ISO/IEC 11578:1996.
- 2005: UUID-spesifikasjon revidert og publisert som en del av ISO/IEC 9834-8:2005.
- 2009: RFC 4122 definerer UUID-formatet og genereringsalgoritmene som brukes i dag.
Over tid har UUID-er blitt et viktig verktøy i distribuerte systemer og database-design, med ulike implementeringer og tilpasninger på tvers av forskjellige programmeringsspråk og plattformer.
Kodeeksempler
Her er eksempler på generering av UUID-er i ulike programmeringsspråk:
1import uuid
2
3## Generer en versjon 4 (tilfeldig) UUID
4tilfeldig_uuid = uuid.uuid4()
5print(f"Versjon 4 UUID: {tilfeldig_uuid}")
6
7## Generer en versjon 1 (tidsbasert) UUID
8tidsbasert_uuid = uuid.uuid1()
9print(f"Versjon 1 UUID: {tidsbasert_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Generer en versjon 4 (tilfeldig) UUID
4const tilfeldigUuid = uuidv4();
5console.log(`Versjon 4 UUID: ${tilfeldigUuid}`);
6
7// Generer en versjon 1 (tidsbasert) UUID
8const tidsbasertUuid = uuidv1();
9console.log(`Versjon 1 UUID: ${tidsbasertUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Generer en versjon 4 (tilfeldig) UUID
6 UUID tilfeldigUuid = UUID.randomUUID();
7 System.out.println("Versjon 4 UUID: " + tilfeldigUuid);
8
9 // Generer en versjon 1 (tidsbasert) UUID
10 UUID tidsbasertUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("Versjon 1 UUID: " + tidsbasertUuid);
12 }
13}
14
1require 'securerandom'
2
3## Generer en versjon 4 (tilfeldig) UUID
4tilfeldig_uuid = SecureRandom.uuid
5puts "Versjon 4 UUID: #{tilfeldig_uuid}"
6
7## Ruby har ikke en innebygd metode for versjon 1 UUID-er
8## Du må bruke en gem som 'uuidtools' for det
9
1<?php
2// Generer en versjon 4 (tilfeldig) UUID
3$tilfeldigUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "Versjon 4 UUID: " . $tilfeldigUuid . "\n";
11
12// PHP har ikke en innebygd metode for versjon 1 UUID-er
13// Du må bruke et bibliotek som 'ramsey/uuid' for det
14?>
15
Referanser
- Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
- International Organization for Standardization. (2005). Information technology – Open Systems Interconnection – Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Universally unique identifier. (2023). In Wikipedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snowflake ID. (2023). In Wikipedia. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spec. (n.d.). GitHub. https://github.com/ulid/spec
Tilbakemelding
Klikk på tilbakemeldings-toast for å begynne å gi tilbakemelding om dette verktøyet
Relaterte verktøy
Oppdag flere verktøy som kan være nyttige for arbeidsflyten din