Generirajte unikatne identifikatorje (CUID) z odpornostjo proti trkom za porazdeljene sisteme, baze podatkov in spletne aplikacije. To orodje ustvarja CUID, ki so razširljivi, razvrščljivi in zelo malo verjetno, da se bodo trčili.
Hitro in enostavno ustvarite ID, odporen na trke.
CUID (Collision-resistant Unique IDentifier) je edinstven identifikator, zasnovan tako, da je odporen na kolizije, horizontalno razširljiv in zaporedno razvrščen. CUID-i so še posebej uporabni v razdistributed sistemih, kjer je treba ustvariti edinstvene identifikatorje brez usklajevanja med vozlišči.
CUID običajno sestavljajo naslednje komponente:
Točna struktura se lahko razlikuje glede na implementacijo CUID-a, vendar te komponente delujejo skupaj, da ustvarijo edinstven in razvrščen identifikator.
Tukaj je vizualna predstavitev tipične strukture CUID-a:
CUID-i se generirajo z uporabo kombinacije časovno osnovanih in naključnih komponent. Postopek običajno vključuje:
Rezultantni CUID je običajno predstavljen kot niz črk in številk.
CUID-i ponujajo več prednosti v primerjavi z drugimi sistemi edinstvenih identifikatorjev:
Pogoste uporabe CUID-ov vključujejo:
Tukaj so primeri generiranja CUID-ov v različnih programskih jezikih:
1// JavaScript (z uporabo knjižnice 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (z uporabo knjižnice 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (z uporabo 'cuid' gem)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (z uporabo knjižnice 'com.github.f4b6a3.cuid')
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# (z uporabo 'Cuid.Net' NuGet paketa)
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 (z uporabo paketa 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (z uporabo paketa 'github.com/lucsky/cuid')
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 (z uporabo paketa 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (z uporabo lastne implementacije)
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 (z uporabo lastne implementacije)
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% Uporaba
12id = generateCUID();
13disp(id);
14
1## R (z uporabo lastne implementacije)
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## Uporaba
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (z uporabo lastne implementacije)
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' Uporaba v celici
17'=GenerateCUID()
18
CUID-e je prvotno razvil Eric Elliott leta 2012 kot rešitev za problem generiranja edinstvenih identifikatorjev v razdistributed sistemih. Koncept je bil navdihnjen z ID sistemom Twitter Snowflake, vendar zasnovan tako, da je lažje implementirati in uporabljati v različnih platformah.
Razvoj CUID-ov je bil usmerjen v potrebo po preprostem, odporne na kolizije ID sistemu, ki bi lahko deloval v različnih programskih jezikih in okoljih. Elliottov cilj je bil ustvariti sistem, ki je enostaven za implementacijo, ne zahteva centralnega usklajevanja in se lahko horizontalno razširi.
Od svojega začetka je CUID prešel skozi več iteracij in izboljšav:
Evolucija CUID-ov odraža spreminjajoče se potrebe razdistributed sistemov in stalna prizadevanja za ravnotežje med preprostostjo, varnostjo in zmogljivostjo pri generiranju edinstvenih identifikatorjev.
Ta orodje za generiranje CUID-ov vam omogoča hitro generiranje CUID-ov za vaše projekte. Preprosto kliknite gumb "Generiraj", da ustvarite nov CUID, in uporabite gumb "Kopiraj", da ga kopirate v odložišče za enostavno uporabo v vaših aplikacijah.
Odkrijte več orodij, ki bi lahko bila koristna za vaš delovni proces