צור מזהים ייחודיים אוניברסליים (UUIDs) עבור יישומים שונים. צור גם UUIDs גרסה 1 (מבוסס זמן) וגם UUIDs גרסה 4 (אקראי) לשימוש במערכות מבוזרות, מסדי נתונים ועוד.
מזהה ייחודי אוניברסלי (UUID) הוא מספר בן 128 סיביות המשמש לזיהוי מידע במערכות מחשב. UUIDs הוסדרו על ידי קרן התוכנה הפתוחה (OSF) כחלק מהסביבה של מחשוב מבוזר (DCE). מזהים אלו נועדו להיות ייחודיים גם במרחב וגם בזמן, מה שהופך אותם לאידיאליים עבור יישומים שונים במערכות מבוזרות ומעבר לכך.
כלי גנרטור UUID זה מאפשר לך ליצור גם גרסה 1 (מבוססת זמן) וגם גרסה 4 (אקראית) של UUIDs. מזהים אלו שימושיים במגוון תרחישים שבהם נדרשת זיהוי ייחודי, כגון מפתחות מסד נתונים, מערכות מבוזרות, ופרוטוקולי רשת.
UUID בדרך כלל מיוצג כ-32 ספרות הקסדצימליות, מוצגות בחמישה קבוצות מופרדות במקפים, בצורה 8-4-4-4-12, בסך הכל 36 תווים (32 תווים אלפאנומריים ו-4 מקפים). לדוגמה:
1550e8400-e29b-41d4-a716-446655440000
2
ה-128 סיביות של UUID מחולקות לשדות ספציפיים, כל אחד נושא מידע שונה בהתאם לגרסת ה-UUID:
הנה דיאגרמה הממחישה את מבנה ה-UUID:
ישנן מספר גרסאות של UUIDs, כל אחת עם שיטת הגנרציה שלה:
כלי זה מתמקד בהפקת UUIDs גרסה 1 וגרסה 4.
UUIDs גרסה 1 נוצרות באמצעות הרכיבים הבאים:
הנוסחה להפקת UUID גרסה 1 יכולה להיות מבוטאת כך:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
UUIDs גרסה 4 נוצרות באמצעות מחולל מספרים אקראיים חזק מבחינה קריפטוגרפית. הנוסחה היא פשוטה:
1UUID = random_128_bit_number
2
עם סיביות מסוימות מוגדרות כדי לציין את הגרסה (4) ואת המגוון.
ל-UUIDs יש יישומים רבים במגוון תחומים של מדעי המחשב והנדסת תוכנה:
מפתחות מסד נתונים: UUIDs משמשים לעיתים קרובות כמפתחות ראשיים במסדי נתונים, במיוחד במערכות מבוזרות שבהן מספר צמתים עשויים לייצר רשומות בו זמנית.
מערכות מבוזרות: במערכות מבוזרות בקנה מידה גדול, UUIDs מסייעים בזיהוי ייחודי של משאבים, עסקאות או אירועים ברחבי מספר צמתים או מרכזי נתונים.
זיהוי תוכן: UUIDs יכולים לשמש ליצירת מזהים ייחודיים לתוכן במערכות אחסון מבוססות תוכן.
ניהול מושבים: יישומי אינטרנט משתמשים לעיתים קרובות ב-UUIDs לניהול מושבי משתמשים, ומבטיחים שכל מושב יהיה בעל מזהה ייחודי.
זיהוי מכשירי IoT: ביישומי האינטרנט של הדברים (IoT), UUIDs יכולים לשמש לזיהוי ייחודי של מכשירים בודדים ברשת.
בעוד ש-UUIDs בשימוש נרחב, ישנן גישות חלופיות להפקת מזהים ייחודיים:
מזהים אוטומטיים: פשוטים ונמצאים בשימוש נפוץ במערכות מסד נתונים בודדות, אך אינם מתאימים לסביבות מבוזרות.
מזהים מבוססי זמן: יכולים להיות שימושיים עבור נתונים מסודרים בזמן אך עשויים להתמודד עם בעיות התנגשויות בתרחישים עם קונקרנציה גבוהה.
מזהי Snowflake: פותחו על ידי טוויטר, מזהים אלו משלבים חותמת זמן ומספר עובד כדי לייצר מזהים ייחודיים במערכות מבוזרות.
ULID (מזהה ייחודי אוניברסלי שניתן למיין): חלופה חדשה יותר ששואפת להיות ידידותית יותר למשתמש וניתנת למיון מאשר UUIDs.
המושג UUIDs הוצג לראשונה במערכת המחשוב של אפולו ולאחר מכן הוסדר על ידי קרן התוכנה הפתוחה (OSF) כחלק מהסביבה של מחשוב מבוזר (DCE) בשנות ה-90. המפרט הראשוני פורסם בשנת 1997 כ-ISO/IEC 11578:1996 ולאחר מכן עודכן בשנת 2005 כחלק מ-ISO/IEC 9834-8:2005.
אבן דרך מרכזית בהיסטוריה של UUID:
עם הזמן, UUIDs הפכו לכלי חיוני במערכות מבוזרות ובעיצוב מסדי נתונים, עם יישומים שונים והתאמות ברחבי שפות תכנות ופלטפורמות שונות.
הנה דוגמאות להפקת UUIDs בשפות תכנות שונות:
1import uuid
2
3## הפקת UUID גרסה 4 (אקראי)
4random_uuid = uuid.uuid4()
5print(f"UUID גרסה 4: {random_uuid}")
6
7## הפקת UUID גרסה 1 (מבוסס זמן)
8time_based_uuid = uuid.uuid1()
9print(f"UUID גרסה 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// הפקת UUID גרסה 4 (אקראי)
4const randomUuid = uuidv4();
5console.log(`UUID גרסה 4: ${randomUuid}`);
6
7// הפקת UUID גרסה 1 (מבוסס זמן)
8const timeBasedUuid = uuidv1();
9console.log(`UUID גרסה 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // הפקת UUID גרסה 4 (אקראי)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID גרסה 4: " + randomUuid);
8
9 // הפקת UUID גרסה 1 (מבוסס זמן)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID גרסה 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## הפקת UUID גרסה 4 (אקראי)
4random_uuid = SecureRandom.uuid
5puts "UUID גרסה 4: #{random_uuid}"
6
7## לרובי אין שיטה מובנית עבור UUIDs גרסה 1
8## תצטרך להשתמש בג'ם כמו 'uuidtools' עבור זה
9
1<?php
2// הפקת UUID גרסה 4 (אקראי)
3$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "UUID גרסה 4: " . $randomUuid . "\n";
11
12// לפי.ה.פי אין שיטה מובנית עבור UUIDs גרסה 1
13// תצטרך להשתמש בספרייה כמו 'ramsey/uuid' עבור זה
14?>
15
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך