Whiz Tools

CUID জেনারেটর

দ্রুত এবং সহজে একটি সংঘর্ষ-প্রতিরোধী আইডি তৈরি করুন।

CUID গঠন

টাইমস্ট্যাম্প:

যাদৃচ্ছিক:

CUID জেনারেটর

পরিচিতি

CUID (Collision-resistant Unique IDentifier) একটি অনন্য শনাক্তকারী যা সংঘর্ষ-প্রতিরোধী, অনুভূমিকভাবে স্কেলেবল এবং ক্রমবর্ধমানভাবে সাজানোর জন্য ডিজাইন করা হয়েছে। CUID গুলি বিশেষভাবে বিতরণকৃত সিস্টেমগুলিতে উপকারী যেখানে অনন্য শনাক্তকারীগুলি নোডগুলির মধ্যে সমন্বয় ছাড়াই তৈরি করতে হবে।

CUID এর গঠন

একটি CUID সাধারণত নিম্নলিখিত উপাদানগুলির সমন্বয়ে গঠিত:

  1. টাইমস্ট্যাম্প: বর্তমান সময়ের একটি প্রতিনিধিত্ব
  2. কাউন্টার: একই মিলিসেকেন্ডের মধ্যে অনন্যতা নিশ্চিত করার জন্য একটি ক্রমবর্ধমান কাউন্টার
  3. ক্লায়েন্ট ফিঙ্গারপ্রিন্ট: CUID তৈরি করা মেশিন বা প্রক্রিয়ার জন্য একটি অনন্য শনাক্তকারী
  4. র্যান্ডম উপাদান: সংঘর্ষের সম্ভাবনা আরও কমানোর জন্য অতিরিক্ত র্যান্ডম ডেটা

正確構造はCUIDの実装によって異なる可能性がありますが、これらの要素は一緒に作業して、ユニークで並べ替え可能な識別子を作成します。

এখানে একটি সাধারণ CUID গঠনের ভিজ্যুয়াল উপস্থাপনাঃ

টাইমস্ট্যাম্প কাউন্টার ফিঙ্গারপ্রিন্ট র্যান্ডম

CUID কিভাবে তৈরি করা হয়

CUID গুলি সময়-ভিত্তিক এবং র্যান্ডম উপাদানের সংমিশ্রণ ব্যবহার করে তৈরি করা হয়। প্রক্রিয়াটি সাধারণত অন্তর্ভুক্ত করে:

  1. বর্তমান টাইমস্ট্যাম্প পাওয়া
  2. একটি কাউন্টার বাড়ানো (যা সময়ে সময়ে পুনরায় সেট হয়)
  3. একটি ক্লায়েন্ট ফিঙ্গারপ্রিন্ট তৈরি করা (সাধারণত প্রতি সেশন বা অ্যাপ্লিকেশন শুরুর সময় একবার করা হয়)
  4. র্যান্ডম ডেটা যোগ করা
  5. এই উপাদানগুলিকে একটি নির্দিষ্ট বিন্যাসে একত্রিত করা

ফলস্বরূপ CUID সাধারণত অক্ষর এবং সংখ্যার একটি স্ট্রিং হিসাবে উপস্থাপন করা হয়।

সুবিধা এবং ব্যবহার কেস

CUID গুলি অন্যান্য অনন্য শনাক্তকারী সিস্টেমের তুলনায় কয়েকটি সুবিধা প্রদান করে:

  1. সংঘর্ষ প্রতিরোধ: টাইমস্ট্যাম্প, কাউন্টার এবং র্যান্ডম ডেটার সংমিশ্রণ সংঘর্ষের সম্ভাবনা অত্যন্ত কম করে, এমনকি বিতরণকৃত সিস্টেমে।
  2. অনুভূমিক স্কেলেবিলিটি: CUID গুলি একাধিক মেশিনে সমন্বয় ছাড়াই স্বাধীনভাবে তৈরি করা যেতে পারে।
  3. ক্রমবর্ধমান সাজানো: টাইমস্ট্যাম্প উপাদান CUID গুলির ক্রোনোলজিকাল সাজানোর অনুমতি দেয়।
  4. URL-বন্ধুত্বপূর্ণ: CUID গুলি সাধারণত URL-নিরাপদ অক্ষর দ্বারা গঠিত।

CUID এর সাধারণ ব্যবহার কেসগুলির মধ্যে রয়েছে:

  • ডাটাবেস প্রাথমিক কী
  • বিতরণকৃত সিস্টেম যেখানে অনন্য আইডি একাধিক নোড জুড়ে তৈরি করতে হবে
  • ওয়েব অ্যাপ্লিকেশনগুলিতে সেশন আইডি
  • বিশ্লেষণ সিস্টেমে ইভেন্ট ট্র্যাকিং
  • ক্লাউড স্টোরেজ সিস্টেমে ফাইল বা সম্পদ নামকরণ

কোড উদাহরণ

এখানে বিভিন্ন প্রোগ্রামিং ভাষায় CUID তৈরি করার উদাহরণ রয়েছে:

// জাভাস্ক্রিপ্ট (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;
// 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

' একটি সেলে ব্যবহার
'=GenerateCUID()

ইতিহাস এবং উন্নয়ন

CUID গুলি 2012 সালে এরিক এলিয়ট দ্বারা বিতরণকৃত সিস্টেমগুলিতে অনন্য শনাক্তকারীগুলি তৈরি করার সমস্যার সমাধান হিসাবে প্রথমে তৈরি করা হয়েছিল। ধারণাটি টুইটারের স্নোফ্লেক আইডি সিস্টেম দ্বারা অনুপ্রাণিত হয়েছিল কিন্তু বিভিন্ন প্ল্যাটফর্মে আরও সহজে বাস্তবায়ন এবং ব্যবহার করার জন্য ডিজাইন করা হয়েছিল।

CUID এর উন্নয়ন বিতরণকৃত সিস্টেমগুলিতে একটি সহজ, সংঘর্ষ-প্রতিরোধী আইডি সিস্টেম তৈরির প্রয়োজন দ্বারা চালিত হয়েছিল যা বিভিন্ন প্রোগ্রামিং ভাষা এবং পরিবেশ জুড়ে কাজ করতে পারে। এলিয়টের লক্ষ্য ছিল একটি সিস্টেম তৈরি করা যা বাস্তবায়নে সহজ, কেন্দ্রীয় সমন্বয়ের প্রয়োজন নেই এবং অনুভূমিকভাবে স্কেল করতে পারে।

এর সূচনা以来,CUID经历了几个迭代和改进:

  1. 原始CUID实现专注于简单性和易用性。
  2. 随着采用的增加,社区在各种编程语言中贡献了实现。
  3. 2021年,引入了CUID2,以解决原始CUID的一些限制,并提供更好的性能和冲突抵抗。
  4. CUID2通过使用更安全的随机数生成器和增加标识符的整体长度来改进原始版本。

CUID 的演变反映了分布式系统不断变化的需求,以及在唯一标识符生成中平衡简单性、安全性和性能的持续努力。

রেফারেন্স

  1. অফিসিয়াল CUID GitHub রিপোজিটরি
  2. CUID2 স্পেসিফিকেশন
  3. এলিয়ট, এরিক। "বিতরণকৃত পরিবেশে অনন্য আইডি তৈরি করা।" মিডিয়াম, 2015।
  4. "বিতরণকৃত সিস্টেমের জন্য সংঘর্ষ-প্রতিরোধী আইডি।" DZone, 2018।

এই CUID জেনারেটর টুলটি আপনাকে আপনার প্রকল্পগুলির জন্য দ্রুত CUID তৈরি করতে দেয়। নতুন CUID তৈরি করতে "জেনারেট" বোতামে ক্লিক করুন এবং আপনার অ্যাপ্লিকেশনগুলিতে সহজে ব্যবহারের জন্য এটি ক্লিপবোর্ডে কপি করতে "কপি" বোতামে ক্লিক করুন।

Feedback