Whiz Tools

UUID जनरेटर

जनरेटेड UUID

UUID संरचना
समय कम

UUID जनरेटर

परिचय

एक यूनिवर्सली यूनिक आइडेंटिफायर (UUID) एक 128-बिट संख्या है जिसका उपयोग कंप्यूटर सिस्टम में जानकारी की पहचान के लिए किया जाता है। UUIDs को ओपन सॉफ्टवेयर फाउंडेशन (OSF) द्वारा वितरित कंप्यूटिंग वातावरण (DCE) के भाग के रूप में मानकीकृत किया गया है। ये पहचानकर्ता अंतरिक्ष और समय दोनों में अद्वितीय होने के लिए डिज़ाइन किए गए हैं, जिससे ये वितरित सिस्टम और उससे आगे के विभिन्न अनुप्रयोगों के लिए आदर्श बनते हैं।

यह UUID जनरेटर उपकरण आपको संस्करण 1 (समय-आधारित) और संस्करण 4 (यादृच्छिक) UUID बनाने की अनुमति देता है। ये पहचानकर्ता विभिन्न परिदृश्यों में अद्वितीय पहचान की आवश्यकता के लिए उपयोगी होते हैं, जैसे डेटाबेस कुंजी, वितरित सिस्टम, और नेटवर्क प्रोटोकॉल।

UUID कैसे काम करते हैं

UUID संरचना

एक UUID आमतौर पर 32 हेक्साडेसिमल अंकों के रूप में दर्शाया जाता है, जो हाइफ़न द्वारा अलग किए गए पांच समूहों में प्रदर्शित होता है, 8-4-4-4-12 के रूप में कुल 36 वर्ण (32 अल्फ़ान्यूमेरिक वर्ण और 4 हाइफ़न) होते हैं। उदाहरण के लिए:

550e8400-e29b-41d4-a716-446655440000

UUID के 128 बिट्स को विशिष्ट फ़ील्ड में विभाजित किया गया है, प्रत्येक UUID संस्करण के आधार पर विभिन्न जानकारी ले जाते हैं:

  • 32 बिट्स time_low फ़ील्ड के लिए
  • 16 बिट्स time_mid फ़ील्ड के लिए
  • 16 बिट्स time_hi_and_version फ़ील्ड के लिए
  • 8 बिट्स clock_seq_hi_and_reserved फ़ील्ड के लिए
  • 8 बिट्स clock_seq_low फ़ील्ड के लिए
  • 48 बिट्स node फ़ील्ड के लिए

यहां UUID संरचना का एक चित्रण है:

A B C D E F A: time_low (32 बिट्स) B: time_mid (16 बिट्स) C: time_hi_and_version (16 बिट्स) D: clock_seq_hi_and_reserved (8 बिट्स) E: clock_seq_low (8 बिट्स) F: node (48 बिट्स)

UUID संस्करण

UUIDs के कई संस्करण हैं, प्रत्येक के अपने निर्माण विधि है:

  1. संस्करण 1 (समय-आधारित): वर्तमान समय और कंप्यूटर के MAC पते का उपयोग करता है।
  2. संस्करण 2 (DCE सुरक्षा): संस्करण 1 के समान, लेकिन एक स्थानीय डोमेन पहचानकर्ता शामिल करता है।
  3. संस्करण 3 (नाम-आधारित, MD5): एक नामस्थान पहचानकर्ता और नाम को हैश करके उत्पन्न किया गया।
  4. संस्करण 4 (यादृच्छिक): एक यादृच्छिक या अर्ध-यादृच्छिक संख्या का उपयोग करके उत्पन्न किया गया।
  5. संस्करण 5 (नाम-आधारित, SHA-1): संस्करण 3 के समान, लेकिन SHA-1 हैशिंग का उपयोग करता है।

यह उपकरण संस्करण 1 और संस्करण 4 UUID उत्पन्न करने पर केंद्रित है।

सूत्र

संस्करण 1 UUID निर्माण

संस्करण 1 UUID निम्नलिखित घटकों का उपयोग करके उत्पन्न किए जाते हैं:

  1. समय: एक 60-बिट मान जो 15 अक्टूबर, 1582 (ईसाई कैलेंडर में ग्रेगोरियन सुधार की तारीख) के बाद से 100-नैनोसेकंड अंतराल की संख्या का प्रतिनिधित्व करता है।
  2. घड़ी अनुक्रम: एक 14-बिट मान जिसका उपयोग घड़ी को पीछे सेट करने की स्थिति में डुप्लिकेट से बचने के लिए किया जाता है।
  3. नोड: एक 48-बिट मान, जो आमतौर पर कंप्यूटर के MAC पते से प्राप्त होता है।

संस्करण 1 UUID उत्पन्न करने का सूत्र इस प्रकार व्यक्त किया जा सकता है:

UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node

संस्करण 4 UUID निर्माण

संस्करण 4 UUID एक क्रिप्टोग्राफिकली मजबूत यादृच्छिक संख्या जनरेटर का उपयोग करके उत्पन्न किए जाते हैं। सूत्र बस है:

UUID = random_128_bit_number

विशिष्ट बिट्स को संस्करण (4) और विविधता को इंगित करने के लिए सेट किया गया है।

उपयोग के मामले

UUIDs के कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग के विभिन्न क्षेत्रों में कई अनुप्रयोग हैं:

  1. डेटाबेस कुंजी: UUIDs अक्सर डेटाबेस में प्राथमिक कुंजी के रूप में उपयोग किए जाते हैं, विशेषकर वितरित सिस्टम में जहां कई नोड्स एक साथ रिकॉर्ड उत्पन्न कर सकते हैं।

  2. वितरित सिस्टम: बड़े पैमाने पर वितरित सिस्टम में, UUIDs संसाधनों, लेनदेन, या घटनाओं की अद्वितीय पहचान में मदद करते हैं।

  3. सामग्री पता लगाने: UUIDs का उपयोग सामग्री के लिए अद्वितीय पहचानकर्ता बनाने के लिए किया जा सकता है जो सामग्री-पता लगाने वाले भंडारण सिस्टम में हैं।

  4. सत्र प्रबंधन: वेब अनुप्रयोग अक्सर उपयोगकर्ता सत्रों को प्रबंधित करने के लिए UUIDs का उपयोग करते हैं, यह सुनिश्चित करते हुए कि प्रत्येक सत्र के पास एक अद्वितीय पहचानकर्ता है।

  5. IoT डिवाइस पहचान: इंटरनेट ऑफ थिंग्स (IoT) अनुप्रयोगों में, UUIDs का उपयोग नेटवर्क में व्यक्तिगत उपकरणों की अद्वितीय पहचान के लिए किया जा सकता है।

विकल्प

हालांकि UUIDs का व्यापक रूप से उपयोग किया जाता है, अद्वितीय पहचानकर्ता उत्पन्न करने के लिए वैकल्पिक दृष्टिकोण हैं:

  1. ऑटो-इंक्रीमेंटिंग IDs: सरल और एकल-डेटाबेस सिस्टम में सामान्यतः उपयोग किया जाता है, लेकिन वितरित वातावरण के लिए उपयुक्त नहीं है।

  2. समय-आधारित IDs: समय-क्रमबद्ध डेटा के लिए उपयोगी हो सकते हैं लेकिन उच्च-समवर्ती परिदृश्यों में टकराव की समस्याओं का सामना कर सकते हैं।

  3. स्नोफ्लेक IDs: ट्विटर द्वारा विकसित, ये IDs टाइमस्टैम्प और कार्यकर्ता संख्या को मिलाकर वितरित सिस्टम में अद्वितीय IDs उत्पन्न करते हैं।

  4. ULID (यूनिवर्सली यूनिक लेक्सिकोग्राफिकली सॉर्टेबल आइडेंटिफायर): एक अधिक हालिया विकल्प जो UUIDs की तुलना में अधिक मानव-मैत्रीपूर्ण और सॉर्टेबल होने का लक्ष्य रखता है।

इतिहास

UUIDs का विचार पहली बार अपोलो नेटवर्क कंप्यूटिंग सिस्टम में पेश किया गया था और बाद में 1990 के दशक में ओपन सॉफ्टवेयर फाउंडेशन (OSF) द्वारा मानकीकृत किया गया। प्रारंभिक विशिष्टता 1997 में ISO/IEC 11578:1996 के रूप में प्रकाशित की गई थी और बाद में 2005 में ISO/IEC 9834-8:2005 के भाग के रूप में संशोधित की गई थी।

UUID इतिहास में प्रमुख मील के पत्थर:

  • 1980 के दशक: अपोलो कंप्यूटर अपने नेटवर्क कंप्यूटिंग सिस्टम के लिए UUID अवधारणा विकसित करता है।
  • 1997: पहली UUID विशिष्टता ISO/IEC 11578:1996 के रूप में प्रकाशित की गई।
  • 2005: UUID विशिष्टता को संशोधित किया गया और ISO/IEC 9834-8:2005 के भाग के रूप में प्रकाशित किया गया।
  • 2009: RFC 4122 UUID प्रारूप और निर्माण एल्गोरिदम को परिभाषित करता है जो आज उपयोग में हैं।

समय के साथ, UUIDs वितरित सिस्टम और डेटाबेस डिज़ाइन में एक आवश्यक उपकरण बन गए हैं, विभिन्न प्रोग्रामिंग भाषाओं और प्लेटफार्मों में विभिन्न कार्यान्वयन और अनुकूलन के साथ।

कोड उदाहरण

यहां विभिन्न प्रोग्रामिंग भाषाओं में UUID उत्पन्न करने के उदाहरण दिए गए हैं:

import uuid

## एक संस्करण 4 (यादृच्छिक) UUID उत्पन्न करें
random_uuid = uuid.uuid4()
print(f"संस्करण 4 UUID: {random_uuid}")

## एक संस्करण 1 (समय-आधारित) UUID उत्पन्न करें
time_based_uuid = uuid.uuid1()
print(f"संस्करण 1 UUID: {time_based_uuid}")
const { v1: uuidv1, v4: uuidv4 } = require('uuid');

// एक संस्करण 4 (यादृच्छिक) UUID उत्पन्न करें
const randomUuid = uuidv4();
console.log(`संस्करण 4 UUID: ${randomUuid}`);

// एक संस्करण 1 (समय-आधारित) UUID उत्पन्न करें
const timeBasedUuid = uuidv1();
console.log(`संस्करण 1 UUID: ${timeBasedUuid}`);
import java.util.UUID;

public class UuidGenerator {
    public static void main(String[] args) {
        // एक संस्करण 4 (यादृच्छिक) UUID उत्पन्न करें
        UUID randomUuid = UUID.randomUUID();
        System.out.println("संस्करण 4 UUID: " + randomUuid);

        // एक संस्करण 1 (समय-आधारित) UUID उत्पन्न करें
        UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
        System.out.println("संस्करण 1 UUID: " + timeBasedUuid);
    }
}
require 'securerandom'

## एक संस्करण 4 (यादृच्छिक) UUID उत्पन्न करें
random_uuid = SecureRandom.uuid
puts "संस्करण 4 UUID: #{random_uuid}"

## रूबी में संस्करण 1 UUIDs के लिए कोई अंतर्निहित विधि नहीं है
## इसके लिए 'uuidtools' जैसे जेम का उपयोग करना होगा
<?php
// एक संस्करण 4 (यादृच्छिक) UUID उत्पन्न करें
$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
    mt_rand(0, 0xffff), mt_rand(0, 0xffff),
    mt_rand(0, 0xffff),
    mt_rand(0, 0x0fff) | 0x4000,
    mt_rand(0, 0x3fff) | 0x8000,
    mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
echo "संस्करण 4 UUID: " . $randomUuid . "\n";

// PHP में संस्करण 1 UUIDs के लिए कोई अंतर्निहित विधि नहीं है
// इसके लिए 'ramsey/uuid' जैसी लाइब्रेरी का उपयोग करना होगा
?>

संदर्भ

  1. Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
  2. International Organization for Standardization. (2005). Information technology – Open Systems Interconnection – Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
  3. यूनिवर्सली यूनिक आइडेंटिफायर. (2023). विकिपीडिया में। https://en.wikipedia.org/wiki/Universally_unique_identifier
  4. स्नोफ्लेक ID. (2023). विकिपीडिया में। https://en.wikipedia.org/wiki/Snowflake_ID
  5. ULID स्पेक. (n.d.). GitHub। https://github.com/ulid/spec
Feedback