צור מזהים ייחודיים חסיני התנגשות (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## Python (באמצעות ספריית 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (באמצעות הג'ם 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (באמצעות ספריית '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// Swift (באמצעות חבילת '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 חדש, והשתמש בכפתור "העתק" כדי להעתיק אותו ללוח שלך לשימוש קל באפליקציות שלך.
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך