Genereer botsingsbestendige unieke identificatoren (CUID's) voor gedistribueerde systemen, databases en webapplicaties. Deze tool maakt CUID's die schaalbaar, sorteerbaar en zeer onwaarschijnlijk zijn om te botsen.
Genereer snel en eenvoudig een botsingsbestendige ID.
Een CUID (Collision-resistant Unique IDentifier) is een unieke identificator die is ontworpen om botsingen te weerstaan, horizontaal schaalbaar te zijn en sequentieel sorteerbaar. CUID's zijn bijzonder nuttig in gedistribueerde systemen waar unieke identificators moeten worden gegenereerd zonder coƶrdinatie tussen knooppunten.
Een CUID bestaat doorgaans uit de volgende componenten:
De exacte structuur kan variƫren afhankelijk van de CUID-implementatie, maar deze componenten werken samen om een unieke en sorteerbare identificator te creƫren.
Hier is een visuele weergave van een typische CUID-structuur:
CUID's worden gegenereerd met een combinatie van tijdgebaseerde en willekeurige componenten. Het proces omvat doorgaans:
De resulterende CUID wordt doorgaans weergegeven als een tekenreeks van letters en cijfers.
CUID's bieden verschillende voordelen ten opzichte van andere systemen voor unieke identificatie:
Veelvoorkomende gebruiksgevallen voor CUID's zijn onder andere:
Hier zijn voorbeelden van het genereren van CUID's in verschillende programmeertalen:
1// JavaScript (met de 'cuid' bibliotheek)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (met de 'cuid' bibliotheek)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (met de 'cuid' gem)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (met de 'com.github.f4b6a3.cuid' bibliotheek)
2import com.github.f4b6a3.cuid.Cuid;
3
4public class CuidExample {
5 public static void main(String[] args) {
6 String id = Cuid.createCuid();
7 System.out.println(id);
8 }
9}
10
1// C# (met het 'Cuid.Net' NuGet-pakket)
2using Cuid;
3
4class Program
5{
6 static void Main(string[] args)
7 {
8 string id = CuidGenerator.Generate();
9 Console.WriteLine(id);
10 }
11}
12
1// PHP (met het 'endyjasmi/cuid' pakket)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (met het 'github.com/lucsky/cuid' pakket)
2package main
3
4import (
5 "fmt"
6 "github.com/lucsky/cuid"
7)
8
9func main() {
10 id := cuid.New()
11 fmt.Println(id)
12}
13
1// Swift (met het 'CUID' pakket)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (met een aangepaste implementatie)
2#include <iostream>
3#include <chrono>
4#include <random>
5#include <sstream>
6#include <iomanip>
7
8std::string generateCUID() {
9 auto now = std::chrono::system_clock::now();
10 auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
11 auto value = now_ms.time_since_epoch();
12 long duration = value.count();
13
14 std::random_device rd;
15 std::mt19937 gen(rd());
16 std::uniform_int_distribution<> dis(0, 35);
17
18 std::stringstream ss;
19 ss << 'c';
20 ss << std::hex << std::setfill('0') << std::setw(8) << duration;
21 for (int i = 0; i < 8; i++) {
22 int r = dis(gen);
23 ss << (char)(r < 10 ? '0' + r : 'a' + r - 10);
24 }
25 return ss.str();
26}
27
28int main() {
29 std::string id = generateCUID();
30 std::cout << id << std::endl;
31 return 0;
32}
33
1% MATLAB (met een aangepaste implementatie)
2function id = generateCUID()
3 timestamp = dec2hex(round(posixtime(datetime('now'))*1000), 8);
4 random = '';
5 for i = 1:8
6 random = [random char(randi([48 57 97 122]))];
7 end
8 id = ['c' timestamp random];
9end
10
11% Gebruik
12id = generateCUID();
13disp(id);
14
1## R (met een aangepaste implementatie)
2library(lubridate)
3
4generate_cuid <- function() {
5 timestamp <- format(as.numeric(now()) * 1000, scientific = FALSE)
6 timestamp <- substr(timestamp, 1, 8)
7 random <- paste0(sample(c(0:9, letters[1:6]), 8, replace = TRUE), collapse = "")
8 paste0("c", timestamp, random)
9}
10
11## Gebruik
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (met een aangepaste implementatie)
2Function GenerateCUID() As String
3 Dim timestamp As String
4 Dim random As String
5 Dim i As Integer
6
7 timestamp = Right("00000000" & Hex(CLng(CDbl(Now()) * 86400000)), 8)
8
9 For i = 1 To 8
10 random = random & Mid("0123456789abcdef", Int(Rnd() * 16) + 1, 1)
11 Next i
12
13 GenerateCUID = "c" & timestamp & random
14End Function
15
16' Gebruik in een cel
17'=GenerateCUID()
18
CUID's zijn oorspronkelijk ontwikkeld door Eric Elliott in 2012 als een oplossing voor het probleem van het genereren van unieke identificators in gedistribueerde systemen. Het concept was geĆÆnspireerd door het Snowflake ID-systeem van Twitter, maar ontworpen om gemakkelijker te implementeren en te gebruiken in verschillende platforms.
De ontwikkeling van CUID's werd gedreven door de behoefte aan een eenvoudig, botsingsbestendig ID-systeem dat kon werken over verschillende programmeertalen en omgevingen. Elliott's doel was om een systeem te creƫren dat eenvoudig te implementeren was, geen centrale coƶrdinatie vereiste en horizontaal kon schalen.
Sinds de oprichting zijn CUID's door verschillende iteraties en verbeteringen gegaan:
De evolutie van CUID's weerspiegelt de veranderende behoeften van gedistribueerde systemen en de voortdurende inspanningen om eenvoud, veiligheid en prestaties in de generatie van unieke identificators in balans te brengen.
Deze CUID-generator tool stelt je in staat om snel CUID's voor je projecten te genereren. Klik eenvoudig op de knop "Genereren" om een nieuwe CUID te maken, en gebruik de knop "Kopiƫren" om deze naar je klembord te kopiƫren voor gemakkelijke toepassing in je applicaties.
Ontdek meer tools die handig kunnen zijn voor uw workflow