Whiz Tools

CUID जनरेटर

एक टकराव-प्रतिरोधी ID जल्दी और आसानी से उत्पन्न करें।

CUID संरचना

टाइमस्टैम्प:

यादृच्छिक:

CUID जनरेटर

परिचय

CUID (Collision-resistant Unique IDentifier) एक अद्वितीय पहचानकर्ता है जिसे टकराव-प्रतिरोधी, क्षैतिज रूप से स्केलेबल, और अनुक्रमिक रूप से क्रमबद्ध करने के लिए डिज़ाइन किया गया है। CUID विशेष रूप से वितरित प्रणालियों में उपयोगी होते हैं जहां अद्वितीय पहचानकर्ताओं को नोड्स के बीच समन्वय के बिना उत्पन्न करने की आवश्यकता होती है।

CUIDs की संरचना

एक CUID आमतौर पर निम्नलिखित घटकों से बना होता है:

  1. टाइमस्टैम्प: वर्तमान समय का प्रतिनिधित्व
  2. काउंटर: उसी मिलीसेकंड के भीतर अद्वितीयता सुनिश्चित करने के लिए एक अनुक्रमिक काउंटर
  3. क्लाइंट फिंगरप्रिंट: मशीन या प्रक्रिया के लिए एक अद्वितीय पहचानकर्ता जो CUID उत्पन्न कर रहा है
  4. यादृच्छिक घटक: टकराव की संभावना को और कम करने के लिए अतिरिक्त यादृच्छिक डेटा

सटीक संरचना CUID कार्यान्वयन के आधार पर भिन्न हो सकती है, लेकिन ये घटक एक अद्वितीय और क्रमबद्ध पहचानकर्ता बनाने के लिए एक साथ काम करते हैं।

यहां एक सामान्य CUID संरचना का दृश्य प्रतिनिधित्व है:

टाइमस्टैम्प काउंटर फिंगरप्रिंट यादृच्छिक

CUIDs कैसे उत्पन्न होते हैं

CUIDs को समय-आधारित और यादृच्छिक घटकों के संयोजन का उपयोग करके उत्पन्न किया जाता है। प्रक्रिया आमतौर पर निम्नलिखित होती है:

  1. वर्तमान टाइमस्टैम्प प्राप्त करना
  2. एक काउंटर बढ़ाना (जो समय-समय पर रीसेट होता है)
  3. एक क्लाइंट फिंगरप्रिंट उत्पन्न करना (जो आमतौर पर प्रति सत्र या एप्लिकेशन प्रारंभ पर किया जाता है)
  4. यादृच्छिक डेटा जोड़ना
  5. इन तत्वों को एक विशिष्ट प्रारूप में संयोजित करना

परिणामी CUID आमतौर पर अक्षरों और संख्याओं की एक स्ट्रिंग के रूप में प्रदर्शित होता है।

लाभ और उपयोग के मामले

CUIDs अन्य अद्वितीय पहचानकर्ता प्रणालियों की तुलना में कई लाभ प्रदान करते हैं:

  1. टकराव प्रतिरोध: टाइमस्टैम्प, काउंटर, और यादृच्छिक डेटा का संयोजन टकरावों को अत्यधिक असंभव बनाता है, यहां तक कि वितरित प्रणालियों में भी।
  2. क्षैतिज स्केलेबिलिटी: CUIDs को कई मशीनों पर स्वतंत्र रूप से उत्पन्न किया जा सकता है बिना समन्वय के।
  3. अनुक्रमिक क्रमबद्धता: टाइमस्टैम्प घटक CUIDs के कालानुक्रमिक क्रमबद्धता की अनुमति देता है।
  4. URL-अनुकूल: CUIDs आमतौर पर URL-सुरक्षित वर्णों से बने होते हैं।

CUIDs के सामान्य उपयोग के मामले हैं:

  • डेटाबेस प्राथमिक कुंजी
  • वितरित प्रणालियाँ जहां अद्वितीय IDs को कई नोड्स के बीच उत्पन्न करने की आवश्यकता होती है
  • वेब अनुप्रयोगों में सत्र IDs
  • एनालिटिक्स प्रणालियों में घटनाओं का ट्रैकिंग
  • क्लाउड स्टोरेज प्रणालियों में फ़ाइल या संसाधन नामकरण

कोड उदाहरण

यहां विभिन्न प्रोग्रामिंग भाषाओं में CUIDs उत्पन्न करने के उदाहरण दिए गए हैं:

// जावास्क्रिप्ट (cuid पुस्तकालय का उपयोग करते हुए)
const cuid = require('cuid');
const id = cuid();
console.log(id);
## पायथन (cuid पुस्तकालय का उपयोग करते हुए)
import cuid
id = cuid.cuid()
print(id)
## रूबी (cuid जेम का उपयोग करते हुए)
require 'cuid'
id = Cuid::generate
puts id
// जावा (com.github.f4b6a3.cuid पुस्तकालय का उपयोग करते हुए)
import com.github.f4b6a3.cuid.Cuid;

public class CuidExample {
    public static void main(String[] args) {
        String id = Cuid.createCuid();
        System.out.println(id);
    }
}
// C# (Cuid.Net NuGet पैकेज का उपयोग करते हुए)
using Cuid;

class Program
{
    static void Main(string[] args)
    {
        string id = CuidGenerator.Generate();
        Console.WriteLine(id);
    }
}
// PHP (endyjasmi/cuid पैकेज का उपयोग करते हुए)
<?php
require 'vendor/autoload.php';
use Endyjasmi\Cuid\Cuid;

$id = Cuid::make();
echo $id;
// गो (github.com/lucsky/cuid पैकेज का उपयोग करते हुए)
package main

import (
    "fmt"
    "github.com/lucsky/cuid"
)

func main() {
    id := cuid.New()
    fmt.Println(id)
}
// स्विफ्ट (CUID पैकेज का उपयोग करते हुए)
import CUID

let id = CUID()
print(id)
// C++ (एक कस्टम कार्यान्वयन का उपयोग करते हुए)
#include <iostream>
#include <chrono>
#include <random>
#include <sstream>
#include <iomanip>

std::string generateCUID() {
    auto now = std::chrono::system_clock::now();
    auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
    auto value = now_ms.time_since_epoch();
    long duration = value.count();

    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(0, 35);

    std::stringstream ss;
    ss << 'c';
    ss << std::hex << std::setfill('0') << std::setw(8) << duration;
    for (int i = 0; i < 8; i++) {
        int r = dis(gen);
        ss << (char)(r < 10 ? '0' + r : 'a' + r - 10);
    }
    return ss.str();
}

int main() {
    std::string id = generateCUID();
    std::cout << id << std::endl;
    return 0;
}
% MATLAB (एक कस्टम कार्यान्वयन का उपयोग करते हुए)
function id = generateCUID()
    timestamp = dec2hex(round(posixtime(datetime('now'))*1000), 8);
    random = '';
    for i = 1:8
        random = [random char(randi([48 57 97 122]))];
    end
    id = ['c' timestamp random];
end

% उपयोग
id = generateCUID();
disp(id);
## R (एक कस्टम कार्यान्वयन का उपयोग करते हुए)
library(lubridate)

generate_cuid <- function() {
  timestamp <- format(as.numeric(now()) * 1000, scientific = FALSE)
  timestamp <- substr(timestamp, 1, 8)
  random <- paste0(sample(c(0:9, letters[1:6]), 8, replace = TRUE), collapse = "")
  paste0("c", timestamp, random)
}

## उपयोग
id <- generate_cuid()
print(id)
' Excel VBA (एक कस्टम कार्यान्वयन का उपयोग करते हुए)
Function GenerateCUID() As String
    Dim timestamp As String
    Dim random As String
    Dim i As Integer
    
    timestamp = Right("00000000" & Hex(CLng(CDbl(Now()) * 86400000)), 8)
    
    For i = 1 To 8
        random = random & Mid("0123456789abcdef", Int(Rnd() * 16) + 1, 1)
    Next i
    
    GenerateCUID = "c" & timestamp & random
End Function

' एक सेल में उपयोग
'=GenerateCUID()

इतिहास और विकास

CUIDs का मूल विकास एरिक एलीट द्वारा 2012 में किया गया था, जो वितरित प्रणालियों में अद्वितीय पहचानकर्ताओं को उत्पन्न करने की समस्या का समाधान था। यह अवधारणा ट्विटर के स्नोफ्लेक ID प्रणाली से प्रेरित थी लेकिन इसे विभिन्न प्लेटफार्मों पर अधिक आसानी से लागू और उपयोग के लिए डिज़ाइन किया गया था।

CUIDs के विकास को सरल, टकराव-प्रतिरोधी ID प्रणाली की आवश्यकता से प्रेरित किया गया था जो विभिन्न प्रोग्रामिंग भाषाओं और वातावरणों में काम कर सके। एलीट का लक्ष्य एक ऐसी प्रणाली बनाना था जो लागू करने में आसान हो, केंद्रीय समन्वय की आवश्यकता न हो, और क्षैतिज रूप से स्केल कर सके।

इसके निर्माण के बाद से, CUID ने कई पुनरावृत्तियों और सुधारों का सामना किया है:

  1. मूल CUID कार्यान्वयन ने सरलता और उपयोग में आसानी पर ध्यान केंद्रित किया।
  2. जैसे-जैसे अपनाने की दर बढ़ी, समुदाय ने विभिन्न प्रोग्रामिंग भाषाओं में कार्यान्वयन में योगदान दिया।
  3. 2021 में, CUID2 को मूल CUID की कुछ सीमाओं को दूर करने और बेहतर प्रदर्शन और टकराव प्रतिरोध प्रदान करने के लिए पेश किया गया।
  4. CUID2 ने मूल पर सुधार किया, अधिक सुरक्षित यादृच्छिक संख्या जनरेटर का उपयोग कर और पहचानकर्ता की कुल लंबाई बढ़ाकर।

CUIDs का विकास वितरित प्रणालियों की बदलती आवश्यकताओं और अद्वितीय पहचानकर्ता उत्पन्न करने में सरलता, सुरक्षा, और प्रदर्शन के बीच संतुलन बनाए रखने के लिए निरंतर प्रयासों को दर्शाता है।

संदर्भ

  1. आधिकारिक CUID GitHub रिपोजिटरी
  2. CUID2 विनिर्देशन
  3. एलीट, एरिक। "वितरित वातावरण में अद्वितीय IDs उत्पन्न करना।" मीडियम, 2015।
  4. "वितरित प्रणालियों के लिए टकराव-प्रतिरोधी IDs।" DZone, 2018।

यह CUID जनरेटर उपकरण आपको अपने प्रोजेक्ट के लिए जल्दी से CUID उत्पन्न करने की अनुमति देता है। बस "उत्पन्न करें" बटन पर क्लिक करें एक नया CUID बनाने के लिए, और इसे अपनी अनुप्रयोगों में आसान उपयोग के लिए "कॉपी" बटन का उपयोग करके अपने क्लिपबोर्ड पर कॉपी करें।

Feedback