قم بإنشاء معرفات فريدة عالمياً (UUIDs) لمجموعة متنوعة من التطبيقات. أنشئ كلاً من الإصدار 1 (المعتمد على الوقت) والإصدار 4 (العشوائي) من UUIDs للاستخدام في الأنظمة الموزعة، وقواعد البيانات، والمزيد.
معرف فريد عالميًا (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.
يتم توليد UUID من الإصدار 1 باستخدام المكونات التالية:
يمكن التعبير عن الصيغة لتوليد UUID من الإصدار 1 كما يلي:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
يتم توليد UUID من الإصدار 4 باستخدام مولد أرقام عشوائية قوي من الناحية التشفيرية. الصيغة ببساطة هي:
1UUID = random_128_bit_number
2
مع تعيين بتات محددة للإشارة إلى الإصدار (4) والبديل.
تتمتع UUIDs بالعديد من التطبيقات عبر مجالات مختلفة من علوم الكمبيوتر وهندسة البرمجيات:
مفاتيح قواعد البيانات: غالبًا ما تُستخدم UUIDs كمفاتيح أساسية في قواعد البيانات، خاصة في الأنظمة الموزعة حيث قد تقوم عدة عقد بتوليد سجلات في نفس الوقت.
الأنظمة الموزعة: في الأنظمة الموزعة الكبيرة، تساعد UUIDs في تحديد الموارد أو المعاملات أو الأحداث بشكل فريد عبر عدة عقد أو مراكز بيانات.
عناوين المحتوى: يمكن استخدام UUIDs لإنشاء معرفات فريدة للمحتوى في أنظمة التخزين المعتمدة على العناوين.
إدارة الجلسات: غالبًا ما تستخدم تطبيقات الويب UUIDs لإدارة جلسات المستخدمين، مما يضمن أن لكل جلسة معرفًا فريدًا.
تحديد أجهزة IoT: في تطبيقات إنترنت الأشياء (IoT)، يمكن استخدام UUIDs لتحديد الأجهزة الفردية بشكل فريد في الشبكة.
بينما تُستخدم UUIDs على نطاق واسع، هناك طرق بديلة لتوليد معرفات فريدة:
معرفات متزايدة تلقائيًا: بسيطة وشائعة الاستخدام في أنظمة قواعد البيانات الفردية، لكنها ليست مناسبة للبيئات الموزعة.
معرفات معتمدة على الطابع الزمني: يمكن أن تكون مفيدة للبيانات المرتبة زمنياً ولكن قد تواجه مشاكل في التكرار في سيناريوهات التزامن العالي.
معرفات Snowflake: تم تطويرها بواسطة Twitter، تجمع هذه المعرفات بين الطابع الزمني ورقم العامل لتوليد معرفات فريدة في الأنظمة الموزعة.
ULID (معرف فريد عالميًا يمكن ترتيبه أبجديًا): بديل أكثر حداثة يهدف إلى أن يكون أكثر ملاءمة للبشر وقابلية للترتيب من UUIDs.
تم تقديم مفهوم UUIDs لأول مرة في نظام حوسبة الشبكة Apollo وتم توحيده لاحقًا بواسطة مؤسسة البرمجيات المفتوحة (OSF) كجزء من بيئة الحوسبة الموزعة (DCE) في التسعينيات. تم نشر المواصفة الأولية في عام 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## لا تحتوي Ruby على طريقة مدمجة لتوليد UUID من الإصدار 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// لا تحتوي PHP على طريقة مدمجة لتوليد UUID من الإصدار 1
13// ستحتاج إلى استخدام مكتبة مثل 'ramsey/uuid' لذلك
14?>
15
اكتشف المزيد من الأدوات التي قد تكون مفيدة لسير عملك