Genereerige kokkupõrkeid vältivad unikaalsed tuvastajad (CUID-d) jaotatud süsteemide, andmebaaside ja veebirakenduste jaoks. See tööriist loob CUID-e, mis on skaleeritavad, sorteeritavad ja väga ebatõenäoliselt kokku kukkuvad.
Genereeri kokkupõrkevastane ID kiiresti ja lihtsalt.
CUID (kokkupõrkekindel unikaalne IDentifikaator) on unikaalne identifikaator, mis on loodud olema kokkupõrkekindel, horisontaalselt skaleeritav ja järjestikku sorteeritav. CUID-id on eriti kasulikud jaotatud süsteemides, kus unikaalseid identifikaatoreid tuleb genereerida ilma sõlmede vahelise koordineerimiseta.
CUID koosneb tavaliselt järgmistest komponentidest:
Täpsed struktuurid võivad varieeruda sõltuvalt CUID rakendamisest, kuid need komponendid töötavad koos, et luua unikaalne ja järjestatav identifikaator.
Siin on visuaalne esitus tüüpilise CUID struktuuri kohta:
CUID-e genereeritakse ajapõhiste ja juhuslike komponentide kombinatsiooni abil. Protsess hõlmab tavaliselt:
Tulemuslik CUID esitatakse tavaliselt tähtede ja numbrite stringina.
CUID-id pakuvad mitmeid eeliseid võrreldes teiste unikaalsete identifikaatorite süsteemidega:
CUID-de levinud kasutusjuhtumiteks on:
Siin on näited CUID-de genereerimisest erinevates programmeerimiskeeltes:
1// JavaScript (kasutades 'cuid' teeki)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (kasutades 'cuid' teeki)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (kasutades 'cuid' gemmi)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (kasutades 'com.github.f4b6a3.cuid' teeki)
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# (kasutades 'Cuid.Net' NuGet paketti)
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 (kasutades 'endyjasmi/cuid' paketti)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (kasutades 'github.com/lucsky/cuid' paketti)
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 (kasutades 'CUID' paketti)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (kasutades kohandatud rakendust)
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 (kasutades kohandatud rakendust)
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% Kasutamine
12id = generateCUID();
13disp(id);
14
1## R (kasutades kohandatud rakendust)
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## Kasutamine
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (kasutades kohandatud rakendust)
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' Kasutamine rakenduses
17'=GenerateCUID()
18
CUID-e arendati esmakordselt Eric Elliott'i poolt 2012. aastal lahenduseks unikaalsete identifikaatorite genereerimise probleemile jaotatud süsteemides. Kontseptsioon sai inspiratsiooni Twitteri Snowflake ID süsteemist, kuid oli loodud olema kergemini rakendatav ja kasutatav erinevates platvormides.
CUID-de arendamine oli tingitud vajadusest lihtsa, kokkupõrkekindla ID süsteemi järele, mis saaks töötada erinevates programmeerimiskeeltes ja keskkondades. Elliott'i eesmärk oli luua süsteem, mis oleks lihtne rakendada, ei nõuaks keskset koordineerimist ja suudaks horisontaalselt skaleeruda.
Alates oma loomisest on CUID läbinud mitmeid iteratsioone ja täiustusi:
CUID-de areng peegeldab jaotatud süsteemide muutuvat vajadust ja pidevaid pingutusi tasakaalu leidmiseks lihtsuse, turvalisuse ja jõudluse vahel unikaalsete identifikaatorite genereerimisel.
See CUID generaatori tööriist võimaldab teil kiiresti genereerida CUID-e oma projektide jaoks. Lihtsalt klõpsake "Genereeri" nuppu, et luua uus CUID, ja kasutage "Kopeeri" nuppu, et kopeerida see oma lõikelauale, et seda oma rakendustes hõlpsasti kasutada.
Avasta rohkem tööriistu, mis võivad olla kasulikud teie töövoos