قم بإنشاء معرفات فريدة مقاومة للتصادم (CUIDs) للأنظمة الموزعة وقواعد البيانات وتطبيقات الويب. هذه الأداة تنشئ CUIDs قابلة للتوسع وقابلة للفرز ومن غير المحتمل أن تتصادم.
قم بإنشاء معرف مقاوم للتصادم بسرعة وسهولة.
CUID (معرف فريد مقاوم للتصادم) هو معرف فريد مصمم ليكون مقاومًا للتصادم، وقابلًا للتوسع أفقيًا، وقابلًا للفرز بترتيب زمني. تعتبر CUIDs مفيدة بشكل خاص في الأنظمة الموزعة حيث تحتاج المعرفات الفريدة إلى أن تُولد بدون تنسيق بين العقد.
يتكون CUID عادةً من المكونات التالية:
قد يختلف الهيكل الدقيق حسب تنفيذ CUID، لكن هذه المكونات تعمل معًا لإنشاء معرف فريد وقابل للفرز.
إليك تمثيل بصري لهيكل CUID النموذجي:
تُولد CUIDs باستخدام مزيج من المكونات المعتمدة على الوقت والعشوائية. تتضمن العملية عادةً:
عادةً ما يتم تمثيل CUID الناتج كسلسلة من الحروف والأرقام.
تقدم CUIDs العديد من المزايا مقارنةً بأنظمة المعرفات الفريدة الأخرى:
تشمل حالات الاستخدام الشائعة لـ CUIDs:
إليك أمثلة على توليد CUIDs في لغات برمجة مختلفة:
1// JavaScript (باستخدام مكتبة '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// 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// سويفت (باستخدام حزمة '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
تم تطوير CUIDs في الأصل بواسطة إريك إليوت في عام 2012 كحل لمشكلة توليد معرفات فريدة في الأنظمة الموزعة. استلهمت الفكرة من نظام معرفات Snowflake الخاص بتويتر ولكن تم تصميمها لتكون أكثر سهولة في التنفيذ والاستخدام عبر منصات مختلفة.
كان تطوير CUIDs مدفوعًا بالحاجة إلى نظام معرف بسيط مقاوم للتصادم يمكن أن يعمل عبر لغات برمجة وبيئات مختلفة. كانت هدف إليوت هو إنشاء نظام سهل التنفيذ، لا يتطلب تنسيق مركزي، ويمكن أن يتوسع أفقيًا.
منذ نشأتها، مرت CUID بعدة مراحل وتحسينات:
تعكس تطورات CUIDs الاحتياجات المتغيرة للأنظمة الموزعة والجهود المستمرة لتحقيق التوازن بين البساطة والأمان والأداء في توليد المعرفات الفريدة.
تسمح لك أداة مولد CUID هذه بتوليد CUIDs بسرعة لمشاريعك. ببساطة انقر على زر "توليد" لإنشاء CUID جديد، واستخدم زر "نسخ" لنسخه إلى الحافظة الخاصة بك للاستخدام السهل في تطبيقاتك.
اكتشف المزيد من الأدوات التي قد تكون مفيدة لسير عملك