الخلاصة
- تبدأ بنية UUIDv7 بوقت Unix طوله 48 بت محسوب بالمللي ثانية. أما البتات الـ74 المتاحة الأخرى فتكون عشوائية افتراضياً أو تحمل دقة إضافية وعداداً اختياريين.
- الترتيب داخل المللي ثانية، ومعالجة تراجع الساعة، ونفاد العداد، وحفظ حالة المولد قرارات تنفيذ محلية. فرز قيم عقد مستقلة لا يثبت ترتيباً سببياً أو ترتيب اعتماد المعاملات.
- UUID معرّف لا وسيلة مصادقة أو تفويض أو قدرة أمنية. إذا احتاج النظام إلى ترتيب ملزم فعليه حفظ وقت الحدث ومصدره والمولد والرابط السببي وتسلسل الاعتماد والإيصال القابل للتحقق منفصلة.
الوقت في المقدمة لخدمة الفهرس
تتوزع قيم UUIDv4 عشوائياً، ولهذا قد تقع الإدخالات المتتابعة في صفحات متباعدة من فهرس قاعدة البيانات. عالج RFC 9562 هذه المشكلة بتخطيطات مرتبة زمنياً تساعد على المحلية وعلى مقارنة UUID كبايتات غير شفافة.
يضع UUIDv7 في أعلى 48 بت عدد المللي ثواني منذ حقبة Unix، من دون الثواني الكبيسة. ثم تأتي بتات الإصدار والنمط، وتبقى 74 بت للعشوائية أو لمزيج من جزء مللي ثانية وعداد وعشوائية. ويوصي RFC باستخدام v7 بدلاً من v1 أو v6 عند الإمكان.
النتيجة الطبيعية أن القيمة المولدة في مللي ثانية لاحقة ترتب بعد السابقة. وتقترب الإدخالات المتزامنة في الفهرس. هذا هو الادعاء المفيد.
لكن الوقت يأتي من ساعة المولد وسياساته. لا يأتي من مسلسِل معاملات مشترك، ولا من جهة ختم زمني، ولا من رسم العلاقات السببية. قابلية الوقت للقراءة والفرز لا ترفع سلطة مصدره.
داخل المللي ثانية أكثر من حل صحيح
يمكن لخدمة سريعة أن تولد قيماً كثيرة تحمل البادئة الزمنية نفسها. تقلل اللاحقة العشوائية الجيدة احتمال التصادم، لكنها لا تحفظ بالضرورة ترتيب الإنشاء.
يصف RFC 9562 ثلاث وسائل اختيارية للرتابة: عداد ثابت الطول في البتات العليا، أو عداد رتيب يبدأ بقيمة عشوائية، أو دقة زمنية دون المللي ثانية تصل إلى 12 بت. ويمكن إبقاء البتات الباقية عشوائية.
لذلك قد تنفذ مكتبتان متوافقتان طريقتين مختلفتين. وقد يحمل عمليتان على المضيف نفسه عدادين منفصلين. يعطي فرز الاتحاد ترتيباً كلياً للبايتات، لكنه لا يكشف بالضرورة أي عملية بدأت أو انتهت أو اعتمدت أو ظهرت أولاً.
التفرد والترتيب خاصيتان مختلفتان. تعالج العشوائية خطر التصادم، ويعالج العداد ترتيب مولد واحد. لا تنشئ أي منهما علاقة سببية بين عقد مستقلة.
تراجع الساعة يغيّر معنى الوعد
قد تعود الساعة إلى الخلف بسبب الضبط اليدوي أو المزامنة أو استئناف آلة افتراضية أو خطأ. يحمّل RFC 9562 التنفيذ مسؤولية تحديد استجابة تناسب متطلباته.
على النظام المهتم بالرتابة مقارنة UUID الجديد بالسابق. إذا لم يكن أكبر، يمكنه استعمال الوقت السابق وزيادة العداد، أو الانتظار حتى تلحق الساعة، أو تقديم الوقت المضمّن، أو إرجاع خطأ.
لكل اختيار أثر. الحفاظ على الوقت السابق يحمي الترتيب المحلي لكنه يباعد القيمة عن الحاضر. الانتظار يخفض التوافر. التقديم يكتب وقتاً مستقبلياً عمداً. والخطأ يرفض إصدار المعرّف.
وتسمح المواصفة أيضاً بتعديل الوقت أو تمويهه أو تنعيمه، ولا تضمن مقدار قربه من الوقت الفعلي. فك أول 48 بت لا يكشف السياسة التي صنعتها. يجب تسجيل السياسة في مكان آخر.
حدود الحالة هي حدود الرتابة
يستطيع المولد حفظ آخر وقت والعداد والبيانات العشوائية في مخزن ثابت. بعد إعادة التشغيل تساعد الحالة على إبقاء القيم الجديدة فوق القديمة. لكن الحفظ اختياري؛ يمكن البدء كدفعة أولى، مع ارتفاع احتمال التصادم والضغط على مصدر العشوائية.
لهذا لا معنى لوعد «UUID رتيب» من دون نطاق. هل هو خيط واحد أم عملية أم مضيف أم عنقود أم إقليم؟ عداد في ذاكرة حاوية لا يرتب الحاوية المجاورة. ويشير RFC إلى أن قاعدة أحادية قد تحصل على أفضل رتابة إذا ولدت المعرفات بنفسها.
تستطيع العقد الموزعة التوليد باستقلال. تساعد العشوائية في منع التكرار، لكنها ليست مسلسِلاً مشتركاً. يفيد الفرز اللاحق في التقسيم والتصفح، ولا ينشئ بأثر رجعي ترتيب اعتماد لم يكن موجوداً.
مزامنة الوقت ليست بروتوكول سببية
تحسن NTP وممارسات RFC 8633 جودة الساعات. لكنها لا تجعل ساعتي تطبيق متطابقتين في كل لحظة، ولا تعبر عن اعتماد حدث على آخر.
إذا كتب النظام A سجلاً ثم أرسل رسالة إلى B، فقد يضع اختلاف الساعتين UUID الخاص بـB قبل قيمة A. وقد يحصل طلب معاد على معرفه في مرحلة أخرى. داخل المللي ثانية قد لا تتشارك العقد قاعدة اللاحقة نفسها.
الدليل السببي يأتي من التطبيق: تشير رسالة B إلى رسالة A، أو تعطي قاعدة البيانات موضع اعتماد، أو يصدر سجل إيصالاً بعد قبول الفعل. يمكن لهذه الحقول أن تعيش مع UUIDv7. يقدم UUID مفتاحاً متنقلاً وقرينة زمنية؛ ويحمل الرابط أو التسلسل الادعاء الأقوى.
هذا تحديد لنطاق RFC 9562 لا عيب في UUIDv7. الوثيقة تضع صيغة وممارسات توليد، ولا تدعي تقديم إجماع موزع أو ساعة عالمية.
لا تحول سهولة الفرز إلى شهادة تدقيق
حين ترتب منصة البيانات حسب UUID وتسمي العرض «ترتيب الأحداث»، فهي تفترض ضمناً ساعات قابلة للمقارنة، وسياسة موحدة للتراجع، وطرقاً متوافقة داخل المللي ثانية، وتوليداً عند نقطة دورة الحياة الصحيحة، وغياب التوليد المبكر وإعادة المحاولة والاستيراد التاريخي.
يمكن أن يفشل أي افتراض ويبقى UUID مطابقاً. قد يولد قبل معاملة ألغي اعتمادها، أو قبل تسليم رسالة، أو اليوم لسجل قديم. وقد يغير تمويه الوقت المسموح قربه من الواقع.
يفصل مخطط التدقيق بين المعرّف الثابت؛ ووقت الحدث ومصدره؛ ووقت الإدخال؛ وهوية المولد وإصدار سياسته؛ والسابق السببي؛ وتسلسل الاعتماد أو الإيصال. لا يحتاج كل نظام إلى الجميع، لكنه يجب أن يحدد ما يريد إثباته.
إذا بقي UUIDv7 وحده، يمكن استعماله كترتيب تقريبي وفق ساعة المولد مع إعلان عدم اليقين. لا يجوز حسم نزاع حول من سبق به وحده.
امتلاك المعرّف لا يمنح الحق
يحذر RFC 9562 من افتراض صعوبة تخمين UUID، ويمنع استعماله كقدرة أمنية يفتح امتلاكها المورد. تستمر القاعدة حتى حين يستخدم v7 عشوائية عالية الجودة.
مقاومة التصادم وصعوبة التنبؤ والسلطة خصائص منفصلة. يقلل الإنتروبيا التصادم ويمكن لمولد آمن أن يصعب التخمين، لكنه لا يصادق حامل القيمة ولا يفوض العملية.
يكشف الوقت المضمّن ترتيب إنشاء محدوداً، وقد يكشف العداد معدل التوليد. يبين RFC 4086 وRFC 8937 أن المظهر العشوائي لا يكفي للأمن.
على الواجهة مصادقة الفاعل وتفويض العمل وحماية السلامة بآلية مناسبة. UUID صحيح الصياغة ليس إثبات ملكية.
اختبر الادعاء الفعلي
إن كان الهدف محلية الفهرس، فقس قاعدة البيانات الفعلية. وإن كان ترتيب الصفحات محلياً، فوثق نطاق المولد وطريقة المللي ثانية والحالة الثابتة وسياسة التراجع.
للتدقيق الموزع، سجل مكان الإصدار ومصدر الساعة وإصدار السياسة ومرحلة دورة الحياة. أضف العلاقة السببية وموضع الاعتماد صراحة. وإذا اعتمد طرف ثالث على الترتيب، فأصدر إيصالاً يمكن التحقق من هويته وسلامته.
تشمل الاختبارات دفعة كبيرة في مللي ثانية، ونفاد العداد، وإعادة التشغيل، وفقد الحالة، وقفز الساعة، وانقسام الأقاليم ودمج التدفقات. بهذه الحدود يؤدي UUIDv7 وظيفته القوية من دون ادعاء سلطة لم يمنحها المعيار.
المصادر
- RFC 9562: UUID
- سجل نشر RFC 9562
- RFC 4122: المواصفة السابقة
- تصحيحات RFC 9562
- سجلات UUID لدى IANA
- RFC 4086: متطلبات العشوائية
- RFC 8937: تحسين العشوائية
- RFC 5905: NTPv4
- RFC 8633: أفضل ممارسات NTP
- RFC 3339: التاريخ والوقت على الإنترنت
- Lu Heng: المواصفة الأولية الدنيا والقرار المحلي والاعتماد الطوعي
- Lu Heng: The Policy Mirror
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
