مولّد UUID v7
توليد معرّفات UUID v7 مع طوابع وقت Unix Epoch مضمّنة، ودعم التوليد المجمّع وخيارات التنسيق
الإدخال
الإخراج
ملف القراءة
ما هو UUID v7؟
UUID v7 هو أحدث إصدار من المعرّفات الفريدة العالمية (Universally Unique Identifiers) المُعرَّفة في RFC 9562. على عكس الإصدارات الأقدم مثل UUID v4 (العشوائي بالكامل) أو UUID v1 (الذي يستخدم عنوان MAC)، يُضمِّن UUID v7 طابعًا زمنيًا بحجم 48 بت من نوع Unix Epoch بالميلي ثانية مباشرةً داخل المعرّف. وهذا يجعل قيم UUID v7 قابلةً للفرز بشكل طبيعي وفق وقت الإنشاء — وهي ميزة كبرى لفهرسة قواعد البيانات والأنظمة الموزعة وتسجيل الأحداث حيث يكون الترتيب الزمني أمرًا بالغ الأهمية.
نظرًا لأن UUID v7 لا يتضمن عناوين MAC، فإنه يتجنب مخاوف الخصوصية المرتبطة بـ UUID v1. أما البتات المتبقية بعد حقلَي الطابع الزمني والإصدار/المتغيّر، فتُملأ ببيانات عشوائية أو رتيبة، مما يضمن التفرد حتى عند توليد عدة UUIDs في الميلي ثانية ذاتها.
كيف يُبنى UUID v7
يتكون UUID v7 من 128 بت منظمة على النحو التالي:
- البتات 0–47: طابع زمني Unix Epoch غير موقّع بحجم 48 بت بترتيب big-endian بالميلي ثانية
- البتات 48–51: حقل الإصدار المكوّن من 4 بتات، مضبوط على
0111(7) - البتات 52–63: 12 بتًا من البيانات العشوائية أو الرتيبة لدقة أو تفرد أقل من الميلي ثانية
- البتات 64–65: حقل المتغيّر المكوّن من بتَّين، مضبوط على
10(RFC 9562) - البتات 66–127: 62 بتًا من البيانات العشوائية أو الرتيبة لضمان تفرد إضافي
يعني هذا البناء أن UUIDs المُولَّدة في وقت لاحق ستُرتَّب دائمًا بعد السابقة على مستوى الميلي ثانية، مما يجعلها مثاليةً كمفاتيح أساسية في قواعد البيانات ذات الفهارس من نوع B-tree.
وصف الأداة
يُنشئ هذا المولّد لـ UUID v7 معرّفاتٍ من الإصدار السابع متوافقةً مع RFC 9562 مع عرض تفصيلي مرئي للطابع الزمني المُضمَّن. يمكنك توليد معرّف واحد أو ما يصل إلى 100 معرّف دفعةً واحدة، والتبديل بين التنسيق بالأحرف الكبيرة والصغيرة، واختيار تضمين الواصلات من عدمه. كما تستخرج الأداة وتعرض طابع Unix Epoch الزمني المُضمَّن من أول UUID مُولَّد، مما يتيح لك التحقق من وقت الإنشاء المُشفَّر في كل معرّف.
أمثلة
| التنسيق | مثال على المخرجات |
|---|---|
| قياسي | 019544a2-3b4c-7d8e-9f01-2a3b4c5d6e7f |
| أحرف كبيرة | 019544A2-3B4C-7D8E-9F01-2A3B4C5D6E7F |
| بدون واصلات | 019544a23b4c7d8e9f012a3b4c5d6e7f |
الميزات
- التوليد الجماعي: توليد ما بين 1 و100 قيمة UUID v7 دفعةً واحدة باستخدام شريط تمرير الكمية
- تبديل الأحرف الكبيرة: التبديل بين المخرجات بأحرف صغيرة أو كبيرة
- تبديل الواصلات: تضمين الواصلات أو حذفها للحصول على تنسيقات مضغوطة
- استخراج الطابع الزمني: يعرض تلقائيًا طابع Unix Epoch الزمني المُضمَّن من UUID المُولَّد
- دعم التنزيل: تصدير UUIDs المُولَّدة كملف نصي للاستخدام الجماعي
حالات الاستخدام
- توليد مفاتيح أساسية قابلة للفرز زمنيًا لقواعد البيانات الكبيرة حيث تكون أداء الإدراج والتوضع المحلي أمرًا بالغ الأهمية
- إنشاء معرّفات متزايدة بشكل رتيب لأنظمة بث الأحداث الموزعة مثل Kafka أو Pulsar
- استبدال UUID v4 في التطبيقات التي تحتاج إلى ترتيب زمني دون الحاجة إلى عمود طابع زمني منفصل
UUID v7 مقارنةً بالإصدارات الأخرى
| الإصدار | مبني على الوقت | قابل للفرز | آمن للخصوصية | العشوائية |
|---|---|---|---|---|
| v1 | نعم | لا | لا (يستخدم MAC) | منخفضة |
| v4 | لا | لا | نعم | عالية |
| v6 | نعم | نعم | لا (يستخدم MAC) | منخفضة |
| v7 | نعم | نعم | نعم | متوسطة |
يجمع UUID v7 أفضل الخصائص: قابلية الفرز المبنية على الوقت دون الكشف عن معرّفات الأجهزة، مع قدر كافٍ من العشوائية للحيلولة دون التصادمات عبر العقد الموزعة.
شرح الخيارات
- الكمية (1–100): عدد قيم UUID v7 المراد توليدها في دفعة واحدة. تشترك جميع UUIDs في الدفعة في نفس الطابع الزمني التقريبي، لكنها تختلف في بتاتها العشوائية.
- الأحرف الكبيرة: عند التفعيل، تُخرج UUIDs بأحرف hex كبيرة (A–F بدلًا من a–f).
- الواصلات: عند التفعيل (الإعداد الافتراضي)، تتضمن UUIDs تجميع الواصلات القياسي 8-4-4-4-12. عطّل هذا الخيار للحصول على string hex مضغوط من 32 حرفًا.
الأسئلة الشائعة
هل يمكن أن يحدث تصادم في UUID v7؟
التصادمات نادرة للغاية. حتى في الميلي ثانية الواحدة، توفر 74 بتًا من البيانات العشوائية/الرتيبة أكثر من 18 كوينتيليون تركيبة ممكنة. كما تستخدم مكتبة uuid عدّادات رتيبة لضمان التفرد داخل العملية الواحدة.
هل UUID v7 متوافق مع الإصدارات السابقة لـ UUID v4؟ نعم. يتبع UUID v7 نفس تنسيق 128 بت بنمط 8-4-4-4-12 وهو صالح في أي مكان يُقبل فيه UUID. تعمل أعمدة UUID الموجودة والمحللات والمدققات دون أي تعديل.
متى يجب استخدام UUID v7 بدلًا من UUID v4؟ استخدم UUID v7 عندما تستفيد حالة الاستخدام لديك من المفاتيح المرتبة زمنيًا — على سبيل المثال، كمفاتيح أساسية في قواعد البيانات حيث يتحسن أداء فهرس B-tree مع عمليات الإدراج المتسلسلة. استخدم UUID v4 عندما لا يكون الترتيب ذا أهمية وتريد أقصى قدر من العشوائية.