Whiz Tools

CUID જનરેટર

ઝડપી અને સરળતાથી ટકરાવ-પ્રતિરોધક ID બનાવો.

CUID બંધારણ

ટાઈમસ્ટેમ્પ:

યાદ્રૂપ:

CUID જનરેટર

પરિચય

CUID (Collision-resistant Unique IDentifier) એ એક અનન્ય ઓળખપત્ર છે જે ટકરાવ-વિરોધી, આડવાં સ્કેલેબલ અને ક્રમબદ્ધ રીતે સૉર્ટ કરી શકાય તેવા માટે ડિઝાઇન કરવામાં આવ્યું છે. CUIDs ખાસ કરીને વિતરિત સિસ્ટમોમાં ઉપયોગી છે જ્યાં અનન્ય ઓળખપત્રો નોડ્સ વચ્ચે સંકલન વિના જનરેટ કરવાની જરૂર હોય છે.

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 ના સામાન્ય ઉપયોગના કેસોમાં સામેલ છે:

  • ડેટાબેઝના પ્રાથમિક કી
  • વિતરિત સિસ્ટમો જ્યાં અનન્ય IDઓને અનેક નોડ્સમાં જનરેટ કરવાની જરૂર છે
  • વેબ એપ્લિકેશન્સમાં સત્ર ID
  • વિશ્લેષણ સિસ્ટમમાં ઘટનાઓને ટ્રેક કરવું
  • ક્લાઉડ સ્ટોરેજ સિસ્ટમોમાં ફાઈલ અથવા સંસાધન નામકરણ

કોડ ઉદાહરણો

અહીં વિવિધ પ્રોગ્રામિંગ ભાષાઓમાં CUIDs જનરેટ કરવાની ઉદાહરણો છે:

// જાવાસ્ક્રિપ્ટ (કુઈડ લાઈબ્રેરીનો ઉપયોગ કરીને)
const cuid = require('cuid');
const id = cuid();
console.log(id);
## પાયથન (કુઈડ લાઈબ્રેરીનો ઉપયોગ કરીને)
import cuid
id = cuid.cuid()
print(id)
## રૂબી (કુઈડ જમનો ઉપયોગ કરીને)
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;
// Go (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

' Usage in a cell
'=GenerateCUID()

ઇતિહાસ અને વિકાસ

CUIDs મૂળભૂત રીતે 2012 માં એરિક એલિયોટ દ્વારા વિકસાવવામાં આવ્યા હતા, જે વિતરિત સિસ્ટમોમાં અનન્ય ઓળખપત્રો જનરેટ કરવાની સમસ્યાનો ઉકેલ હતો. આ વિચાર ટ્વિટરનું સ્નોફ્લેક ID સિસ્ટમથી પ્રેરિત હતો, પરંતુ તે વિવિધ પ્લેટફોર્મમાં વધુ સરળતાથી અમલમાં મૂકવા અને ઉપયોગમાં લેવા માટે ડિઝાઇન કરવામાં આવ્યો હતો.

CUIDs ના વિકાસને એક સરળ, ટકરાવ-વિરોધી ID સિસ્ટમની જરૂર હતી જે વિવિધ પ્રોગ્રામિંગ ભાષાઓ અને પર્યાવરણોમાં કાર્ય કરી શકે. એલિયોટનો ઉદ્દેશ એ એક એવી સિસ્ટમ બનાવવી હતી જે અમલમાં સરળ, કેન્દ્રિય સંકલનની જરૂર ન હોય, અને આડવાં સ્કેલ કરી શકે.

તેના સ્થાપન પછી, CUIDs ઘણા ફેરફારો અને સુધારાઓમાંથી પસાર થયા છે:

  1. મૂળ CUID અમલ સરળતા અને ઉપયોગમાં સરળતાને ધ્યાનમાં રાખીને કેન્દ્રિત હતું.
  2. જ્યારે અપનાવણું વધ્યું, ત્યારે સમુદાયે વિવિધ પ્રોગ્રામિંગ ભાષાઓમાં અમલમાં યોગદાન આપ્યું.
  3. 2021 માં, CUID2 રજૂ કરવામાં આવ્યું હતું જે મૂળ CUID ની કેટલીક મર્યાદાઓને દૂર કરવા અને વધુ સારી કામગીરી અને ટકરાવ-વિરોધકતા પ્રદાન કરવા માટે.
  4. CUID2 મૂળને સુધારવા માટે વધુ સુરક્ષિત રૅન્ડમ નંબર જનરેટરનો ઉપયોગ કરે છે અને ઓળખપત્રની કુલ લંબાઈ વધારવામાં આવે છે.

CUIDs નો વિકાસ વિતરિત સિસ્ટમોના બદલાતા જરૂરિયાતોને દર્શાવે છે અને અનન્ય ઓળખપત્ર જનરેશનમાં સરળતા, સુરક્ષા અને કાર્યક્ષમતા વચ્ચે સંતુલન જાળવવા માટેની સતત કોશિશને દર્શાવે છે.

સંદર્ભો

  1. આધિકૃત CUID GitHub રિપોઝિટરી
  2. CUID2 સ્પષ્ટીકરણ
  3. એલિયોટ, એરિક. "વિતરિત પર્યાવરણમાં અનન્ય ID જનરેટ કરવું." મિડિયમ, 2015.
  4. "વિતરિત સિસ્ટમો માટે ટકરાવ-વિરોધી ID." DZone, 2018.

આ CUID જનરેટર સાધન તમને તમારા પ્રોજેક્ટ્સ માટે ઝડપી CUIDs જનરેટ કરવાની મંજૂરી આપે છે. નવા CUID બનાવવા માટે "જનરેટ" બટન પર ક્લિક કરો, અને તમારા એપ્લિકેશન્સમાં સરળતાથી ઉપયોગ માટે તેને ક્લિપબોર્ડમાં નકલ કરવા માટે "કોપી" બટનનો ઉપયોગ કરો.

Feedback