Hasilkan pengidentifikasi unik yang tahan tabrakan (CUID) untuk sistem terdistribusi, basis data, dan aplikasi web. Alat ini membuat CUID yang dapat diskalakan, dapat diurutkan, dan sangat tidak mungkin mengalami tabrakan.
Hasilkan ID yang tahan tabrakan dengan cepat dan mudah.
Un CUID (Identificador Único Resistente a Colisiones) es un identificador único diseñado para ser resistente a colisiones, escalable horizontalmente y ordenable secuencialmente. Los CUID son particularmente útiles en sistemas distribuidos donde se necesitan generar identificadores únicos sin coordinación entre nodos.
Un CUID típicamente consiste en los siguientes componentes:
La estructura exacta puede variar dependiendo de la implementación del CUID, pero estos componentes trabajan juntos para crear un identificador único y ordenable.
Aquí hay una representación visual de una estructura típica de CUID:
Los CUID se generan utilizando una combinación de componentes basados en el tiempo y aleatorios. El proceso típicamente implica:
El CUID resultante se representa típicamente como una cadena de letras y números.
Los CUID ofrecen varias ventajas sobre otros sistemas de identificadores únicos:
Los casos de uso comunes para los CUID incluyen:
Aquí hay ejemplos de generación de CUID en varios lenguajes de programación:
1// JavaScript (usando la biblioteca 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (usando la biblioteca 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (usando la gema 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (usando la biblioteca '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# (usando el paquete 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 (usando el paquete 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (usando el paquete '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 (usando el paquete 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (usando una implementación personalizada)
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 (usando una implementación personalizada)
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% Uso
12id = generateCUID();
13disp(id);
14
1## R (usando una implementación personalizada)
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## Uso
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (usando una implementación personalizada)
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' Uso en una celda
17'=GenerateCUID()
18
Los CUID fueron desarrollados originalmente por Eric Elliott en 2012 como una solución al problema de generar identificadores únicos en sistemas distribuidos. El concepto se inspiró en el sistema de ID Snowflake de Twitter, pero diseñado para ser más fácilmente implementado y utilizado en varias plataformas.
El desarrollo de los CUID fue impulsado por la necesidad de un sistema de ID simple y resistente a colisiones que pudiera funcionar a través de diferentes lenguajes de programación y entornos. El objetivo de Elliott era crear un sistema que fuera fácil de implementar, que no requiriera coordinación central y que pudiera escalar horizontalmente.
Desde su inicio, los CUID han pasado por varias iteraciones y mejoras:
La evolución de los CUID refleja las necesidades cambiantes de los sistemas distribuidos y los esfuerzos continuos para equilibrar simplicidad, seguridad y rendimiento en la generación de identificadores únicos.
Esta herramienta generadora de CUID te permite generar rápidamente CUID para tus proyectos. Simplemente haz clic en el botón "Generar" para crear un nuevo CUID, y usa el botón "Copiar" para copiarlo al portapapeles para su fácil uso en tus aplicaciones.
Temukan lebih banyak alat yang mungkin berguna untuk alur kerja Anda