شناسههای منحصر به فرد مقاوم در برابر برخورد (CUID) برای سیستمهای توزیعشده، پایگاههای داده و برنامههای وب تولید کنید. این ابزار CUIDهایی ایجاد میکند که مقیاسپذیر، قابل مرتبسازی و به شدت غیرمحتمل برای برخورد هستند.
به سرعت و به آسانی یک شناسه مقاوم در برابر برخورد تولید کنید.
CUID (شناسه منحصر به فرد مقاوم در برابر تصادم) یک شناسه منحصر به فرد است که برای مقاوم بودن در برابر تصادم، مقیاسپذیری افقی و قابلیت مرتبسازی ترتیبی طراحی شده است. CUIDها بهویژه در سیستمهای توزیعشده که نیاز به تولید شناسههای منحصر به فرد بدون هماهنگی بین گرهها دارند، مفید هستند.
یک CUID معمولاً از اجزای زیر تشکیل شده است:
ساختار دقیق ممکن است بسته به پیادهسازی CUID متفاوت باشد، اما این اجزا بهطور مشترک برای ایجاد یک شناسه منحصر به فرد و قابل مرتبسازی کار میکنند.
در اینجا یک نمای بصری از ساختار معمولی CUID آورده شده است:
CUIDها با استفاده از ترکیبی از اجزای مبتنی بر زمان و تصادفی تولید میشوند. این فرآیند معمولاً شامل مراحل زیر است:
CUID حاصل معمولاً بهصورت یک رشته از حروف و اعداد نمایش داده میشود.
CUIDها مزایای متعددی نسبت به سایر سیستمهای شناسه منحصر به فرد ارائه میدهند:
موارد استفاده رایج برای CUIDها شامل:
در اینجا مثالهایی از تولید CUIDها در زبانهای برنامهنویسی مختلف آورده شده است:
1// جاوا اسکریپت (با استفاده از کتابخانه 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## پایتون (با استفاده از کتابخانه 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## روبی (با استفاده از جواهر 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// جاوا (با استفاده از کتابخانه '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// سیشارپ (با استفاده از بسته 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// سوئیفت (با استفاده از بسته '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% متلب (با استفاده از یک پیادهسازی سفارشی)
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' 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 توئیتر الهام گرفته شده است، اما طراحی شده است تا بهراحتی در پلتفرمهای مختلف پیادهسازی و استفاده شود.
توسعه CUIDها با نیاز به یک سیستم شناسه منحصر به فرد ساده، مقاوم در برابر تصادم که بتواند در زبانها و محیطهای مختلف کار کند، هدایت شد. هدف الیوت ایجاد سیستمی بود که پیادهسازی آن آسان باشد، نیاز به هماهنگی مرکزی نداشته باشد و بتواند بهصورت افقی مقیاسپذیر باشد.
از زمان پیدایش، CUIDها چندین بار دستخوش تغییرات و بهبودها شدهاند:
تکامل CUIDها منعکسکننده نیازهای متغیر سیستمهای توزیعشده و تلاشهای مداوم برای تعادل بین سادگی، امنیت و عملکرد در تولید شناسههای منحصر به فرد است.
این ابزار تولید کننده CUID به شما این امکان را میدهد که بهسرعت CUIDها را برای پروژههای خود تولید کنید. کافی است روی دکمه "تولید" کلیک کنید تا یک CUID جدید ایجاد کنید و از دکمه "کپی" برای کپی کردن آن به کلیپبورد خود استفاده کنید تا بهراحتی در برنامههای خود استفاده کنید.
کشف ابزارهای بیشتری که ممکن است برای جریان کاری شما مفید باشند