Генеруйте унікальні ідентифікатори (CUID), стійкі до колізій, для розподілених систем, баз даних та веб-додатків. Цей інструмент створює CUID, які є масштабованими, сортованими та малоймовірно, що можуть зіткнутися.
Швидко та легко генеруйте ідентифікатор, стійкий до колізій.
CUID (Collision-resistant Unique IDentifier) — це унікальний ідентифікатор, розроблений для того, щоб бути стійким до колізій, горизонтально масштабованим і послідовно сортуємим. CUID особливо корисні в розподілених системах, де потрібно генерувати унікальні ідентифікатори без координації між вузлами.
CUID зазвичай складається з таких компонентів:
Точна структура може варіюватися в залежності від реалізації CUID, але ці компоненти працюють разом, щоб створити унікальний та сортуємий ідентифікатор.
Ось візуальне представлення типової структури CUID:
CUID генеруються за допомогою комбінації часових та випадкових компонентів. Процес зазвичай включає:
Отриманий CUID зазвичай представляється у вигляді рядка літер і цифр.
CUID пропонують кілька переваг у порівнянні з іншими системами унікальних ідентифікаторів:
Звичайні випадки використання CUID включають:
Ось приклади генерації CUID на різних мовах програмування:
1// JavaScript (використовуючи бібліотеку 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (використовуючи бібліотеку 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (використовуючи гем 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (використовуючи бібліотеку '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# (використовуючи пакет 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 (використовуючи пакет 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (використовуючи пакет '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 (використовуючи пакет 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (використовуючи власну реалізацію)
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 (використовуючи власну реалізацію)
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% Використання
12id = generateCUID();
13disp(id);
14
1## R (використовуючи власну реалізацію)
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## Використання
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (використовуючи власну реалізацію)
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' Використання в клітинці
17'=GenerateCUID()
18
CUID були спочатку розроблені Еріком Елліотом у 2012 році як рішення проблеми генерації унікальних ідентифікаторів у розподілених системах. Концепція була натхненна системою ідентифікаторів Snowflake від Twitter, але розроблена для більш простого впровадження та використання на різних платформах.
Розвиток CUID був зумовлений необхідністю простого, стійкого до колізій ID-системи, яка могла б працювати на різних мовах програмування та в різних середовищах. Метою Елліота було створити систему, яка була б легкою у впровадженні, не вимагала центральної координації та могла б горизонтально масштабуватися.
З моменту свого виникнення CUID пройшли кілька ітерацій та покращень:
Еволюція CUID відображає змінювані потреби розподілених систем і постійні зусилля з балансування простоти, безпеки та продуктивності в генерації унікальних ідентифікаторів.
Цей інструмент генерації CUID дозволяє швидко генерувати CUID для ваших проектів. Просто натисніть кнопку "Генерувати", щоб створити новий CUID, і використовуйте кнопку "Копіювати", щоб скопіювати його в буфер обміну для легкого використання у ваших додатках.
Відкрийте більше інструментів, які можуть бути корисними для вашого робочого процесу