Generera kollision-resistenta unika identifierare (CUID) för distribuerade system, databaser och webbapplikationer. Det här verktyget skapar CUID som är skalbara, sorterade och mycket osannolika att kollidera.
Generera en kollision-resistent ID snabbt och enkelt.
En CUID (Collision-resistant Unique IDentifier) är en unik identifierare som är utformad för att vara kollision-resistent, horisontellt skalbar och sekventiellt sorterad. CUID:er är särskilt användbara i distribuerade system där unika identifierare behöver genereras utan samordning mellan noder.
En CUID består typiskt av följande komponenter:
Den exakta strukturen kan variera beroende på CUID-implementeringen, men dessa komponenter arbetar tillsammans för att skapa en unik och sorteringsbar identifierare.
Här är en visuell representation av en typisk CUID-struktur:
CUID:er genereras med en kombination av tidsbaserade och slumpmässiga komponenter. Processen involverar vanligtvis:
Den resulterande CUID:en representeras vanligtvis som en sträng av bokstäver och siffror.
CUID:er erbjuder flera fördelar jämfört med andra system för unika identifierare:
Vanliga användningsområden för CUID:er inkluderar:
Här är exempel på hur man genererar CUID:er i olika programmeringsspråk:
1// JavaScript (använder 'cuid'-biblioteket)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (använder 'cuid'-biblioteket)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (använder 'cuid'-gem)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (använder 'com.github.f4b6a3.cuid'-biblioteket)
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# (använder 'Cuid.Net'-NuGet-paketet)
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 (använder 'endyjasmi/cuid'-paketet)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (använder 'github.com/lucsky/cuid'-paketet)
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 (använder 'CUID'-paketet)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (använder en egen implementation)
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 (använder en egen implementation)
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% Användning
12id = generateCUID();
13disp(id);
14
1## R (använder en egen implementation)
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## Användning
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (använder en egen implementation)
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' Användning i en cell
17'=GenerateCUID()
18
CUID:er utvecklades ursprungligen av Eric Elliott 2012 som en lösning på problemet med att generera unika identifierare i distribuerade system. Konceptet inspirerades av Twitters Snowflake-ID-system men utformades för att vara enklare att implementera och använda över olika plattformar.
Utvecklingen av CUID:er drevs av behovet av ett enkelt, kollision-resistent ID-system som kunde fungera över olika programmeringsspråk och miljöer. Elliotts mål var att skapa ett system som var enkelt att implementera, inte krävde central samordning och kunde skalas horisontellt.
Sedan dess har CUID:er genomgått flera iterationer och förbättringar:
Utvecklingen av CUID:er speglar de föränderliga behoven hos distribuerade system och de pågående ansträngningarna för att balansera enkelhet, säkerhet och prestanda i genereringen av unika identifierare.
Detta CUID-generatorverktyg låter dig snabbt generera CUID:er för dina projekt. Klicka helt enkelt på "Generera"-knappen för att skapa en ny CUID, och använd "Kopiera"-knappen för att kopiera den till ditt urklipp för enkel användning i dina applikationer.
Upptäck fler verktyg som kan vara användbara för din arbetsflöde