🛠️

Whiz Tools

Build • Create • Innovate

Genereer K-sortable unieke identificatoren met KSUID

Genereer K-sortable unieke identificatoren (KSUID's) voor gebruik in gedistribueerde systemen, databases en applicaties die unieke, tijd-sortable sleutels vereisen. KSUID's combineren een tijdstempel met willekeurige gegevens om botsingsbestendige, sorteerbare identificatoren te creëren.

KSUID-generator

📚

Documentatie

KSUID Generator

Inleiding

KSUID (K-Sortable Unique IDentifier) is een uniek identificatieformaat dat verschillende voordelen biedt ten opzichte van traditionele UUID (Universally Unique Identifier) en andere identificatiesystemen. Deze tool stelt je in staat om snel en eenvoudig KSUIDs te genereren.

Wat is een KSUID?

Een KSUID is een 20-byte sorteervriendelijke identificatie die bestaat uit:

  1. Een 32-bits tijdstempel (4 bytes)
  2. 16 bytes willekeurigheid

Wanneer weergegeven als een tekenreeks, wordt een KSUID gecodeerd in base62 en is het 27 tekens lang.

Structuur van een KSUID

De structuur van een KSUID kan als volgt worden onderverdeeld:

  1. Tijdstempel (4 bytes): Dit vertegenwoordigt het aantal seconden sinds de Unix-epoch (1 januari 1970, om 00:00 UTC). De tijdstempel maakt het mogelijk om KSUIDs ruwweg op generatie tijd te sorteren.

  2. Willekeurige Component (16 bytes): Dit is een cryptografisch veilige willekeurige getal dat uniciteit garandeert, zelfs wanneer meerdere KSUIDs in dezelfde seconde worden gegenereerd.

  3. Base62 Codering: De gecombineerde 20 bytes (tijdstempel + willekeurig) worden vervolgens gecodeerd met behulp van base62 (A-Z, a-z, 0-9) om de uiteindelijke 27-teken lange tekenreeks te produceren.

KSUID Formule

Een KSUID kan wiskundig worden weergegeven als:

KSUID=Base62(TR)KSUID = Base62(T || R)

Waarbij:

  • TT de 32-bits tijdstempel is
  • RR de 128-bits willekeurige component is
  • || staat voor concatenatie

De tijdstempel TT wordt berekend als:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

Waar KSUID_epoch 1400000000 is (2014-05-13T16:53:20Z).

KSUID Structuur Diagram

Tijdstempel (4 bytes) Willekeurige Component (16 bytes)

Toepassingen voor KSUIDs

KSUIDs zijn bijzonder nuttig in de volgende scenario's:

  1. Gedistribueerde Systemen: Wanneer je unieke identificaties nodig hebt over meerdere servers of diensten zonder coördinatie.

  2. Tijd-Sorteerbare Gegevens: Wanneer je gegevens wilt sorteren op basis van creatietijd zonder een aparte tijdstempel op te slaan.

  3. Database Sleutels: Als primaire sleutels in databases, vooral in gedistribueerde databases waar auto-incrementerende gehele getallen niet geschikt zijn.

  4. URL-Veilige Identificaties: Voor het creëren van korte, unieke, URL-veilige identificaties voor bronnen in webapplicaties.

  5. Logcorrelatie: Om logvermeldingen te correleren over verschillende diensten in een microservices-architectuur.

Voordelen van KSUIDs

KSUIDs bieden verschillende voordelen ten opzichte van andere identificatiesystemen:

  1. Sorteerbaarheid: In tegenstelling tot UUIDs kunnen KSUIDs chronologisch worden gesorteerd, wat nuttig is voor database-indexering en loganalyse.

  2. Geen Coördinatie Vereist: In tegenstelling tot auto-incrementerende ID's kunnen KSUIDs onafhankelijk door verschillende servers worden gegenereerd zonder het risico op botsingen.

  3. Compacte Representatie: Met 27 tekens zijn KSUIDs compacter dan UUIDs wanneer ze als tekenreeksen worden weergegeven.

  4. Tijdstempel Ingebed: De ingebedde tijdstempel maakt tijdgebaseerde sortering en filtering mogelijk zonder dat een apart tijdstempelveld nodig is.

  5. URL-Veilig: De base62-codering maakt KSUIDs veilig voor gebruik in URL's zonder aanvullende codering.

  6. Verminderde Botsingskans: De 16-byte willekeurige component maakt botsingen extreem onwaarschijnlijk, zelfs bij hoge generatie snelheden.

Hoe deze Generator te Gebruiken

  1. Voer eventuele aanvullende parameters in indien nodig (bijv. aangepaste tijdstempel).
  2. Klik op de knop "Genereer KSUID" om een nieuwe KSUID te maken.
  3. De gegenereerde KSUID wordt weergegeven in het uitvoerveld.
  4. Je kunt meerdere KSUIDs genereren door stappen 1-3 te herhalen.
  5. Gebruik de knop "Kopiëren" naast elke KSUID om deze naar je klembord te kopiëren.
  6. Optioneel kun je de functie "Exporteren" gebruiken om een lijst van gegenereerde KSUIDs te downloaden.

Vergeet niet dat elke KSUID uniek is en slechts één keer mag worden gebruikt. Genereer elke keer dat je een unieke identificatie nodig hebt een nieuwe KSUID.

Code Voorbeelden

Hier zijn voorbeelden van het genereren van KSUIDs in verschillende programmeertalen:

1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Gegenereerde KSUID: {new_id}")
6

Referenties

  1. Segment's KSUID GitHub Repository: https://github.com/segmentio/ksuid
  2. "Generating good unique identifiers" door Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. KSUID Specificatie: https://github.com/segmentio/ksuid/blob/master/README.md