Générez des identifiants uniques résistants aux collisions (CUID) pour les systèmes distribués, les bases de données et les applications web. Cet outil crée des CUID qui sont évolutifs, triables et très peu susceptibles de provoquer des collisions.
Générez un ID résistant aux collisions rapidement et facilement.
Un CUID (Identifiant Unique Résistant aux Collisions) est un identifiant unique conçu pour être résistant aux collisions, évolutif horizontalement et triable séquentiellement. Les CUIDs sont particulièrement utiles dans les systèmes distribués où des identifiants uniques doivent être générés sans coordination entre les nœuds.
Un CUID se compose généralement des composants suivants :
La structure exacte peut varier en fonction de l'implémentation du CUID, mais ces composants travaillent ensemble pour créer un identifiant unique et triable.
Voici une représentation visuelle d'une structure typique de CUID :
Les CUIDs sont générés en utilisant une combinaison de composants basés sur le temps et aléatoires. Le processus implique généralement :
Le CUID résultant est généralement représenté sous forme de chaîne de lettres et de chiffres.
Les CUIDs offrent plusieurs avantages par rapport à d'autres systèmes d'identifiants uniques :
Les cas d'utilisation courants pour les CUIDs incluent :
Voici des exemples de génération de CUIDs dans divers langages de programmation :
1// JavaScript (en utilisant la bibliothèque 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (en utilisant la bibliothèque 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (en utilisant la gem 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (en utilisant la bibliothèque '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# (en utilisant le package NuGet 'Cuid.Net')
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 (en utilisant le package 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (en utilisant le package '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 (en utilisant le package 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (en utilisant une implémentation personnalisée)
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 (en utilisant une implémentation personnalisée)
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% Utilisation
12id = generateCUID();
13disp(id);
14
1## R (en utilisant une implémentation personnalisée)
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## Utilisation
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (en utilisant une implémentation personnalisée)
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' Utilisation dans une cellule
17'=GenerateCUID()
18
Les CUIDs ont été initialement développés par Eric Elliott en 2012 comme une solution au problème de génération d'identifiants uniques dans des systèmes distribués. Le concept a été inspiré par le système d'ID Snowflake de Twitter mais conçu pour être plus facilement implémenté et utilisé sur diverses plateformes.
Le développement des CUIDs a été motivé par le besoin d'un système d'ID simple et résistant aux collisions qui pourrait fonctionner à travers différents langages de programmation et environnements. L'objectif d'Elliott était de créer un système facile à mettre en œuvre, ne nécessitant pas de coordination centrale, et pouvant évoluer horizontalement.
Depuis sa création, le CUID a connu plusieurs itérations et améliorations :
L'évolution des CUIDs reflète les besoins changeants des systèmes distribués et les efforts continus pour équilibrer simplicité, sécurité et performance dans la génération d'identifiants uniques.
Cet outil générateur de CUID vous permet de générer rapidement des CUIDs pour vos projets. Il vous suffit de cliquer sur le bouton "Générer" pour créer un nouveau CUID, et d'utiliser le bouton "Copier" pour le copier dans votre presse-papiers pour une utilisation facile dans vos applications.
Découvrez plus d'outils qui pourraient être utiles pour votre flux de travail