يتم ترجمة هذا الموقع تلقائيًا إلى عدة لغات باستخدام برنامج طوّره كوهِي كوياناغي. للاطلاع على المحتوى الأدق، يرجى الرجوع إلى النسخة الأصلية باللغة الإنجليزية .

نهج Splync المزدوج للمعرفات: UUID و Auto-Incremented Int

Splync يستخدم معرفين للبيانات الحساسة

في قاعدة بيانات Splync، يتم تحديد كل مستخدم وكل مشروع بواسطة معرفين مختلفين: UUID وعدد صحيح يتم زيادته تلقائيًا. العدد الصحيح الذي يتم زيادته تلقائيًا هو الذي يعرفه معظم الناس - إنه مجرد عداد: 1، 2، 3، وهكذا. تستخدم Splync هذه الأعداد داخل قاعدة بيانات الخادم لتنظيم معظم الجداول لأنها بسيطة وسريعة وفعالة للتوصيلات. ومع ذلك، نحن لا نعرض هذه الأرقام الداخلية للتطبيق. على سبيل المثال، إذا كنت المستخدم رقم 42 الذي يسجل، فإن معرفك الداخلي في قاعدة البيانات سيكون 42. لكن تطبيق iOS الخاص بك لا يرى "42" أبدًا. بدلاً من ذلك، يستخدم التطبيق UUID لتمثيلك. نطبق نفس النهج على المشاريع - قد يكون معرف المشروع "7" داخل قاعدة البيانات، لكن التطبيق يشير إليه دائمًا باستخدام UUID طويل.

ما هو UUID

UUID هو اختصار لمعرف فريد عالميًا. تستخدم Splync الإصدار 4، المتغير 1 من UUIDs، المتوافق مع RFC 4122 - أحد أكثر المعايير اعتمادًا. يتم إنشاؤه عشوائيًا، ويبدو مثل 949ca11c-a6ed-48a3-b40a-fa9727494917. يُكتب UUID عادةً كـ 32 حرفًا سداسيًا عشريًا مقسمًا إلى خمسة أقسام مفصولة بشرطات. صُمم ليكون فريدًا عالميًا، مما يعني أنه لن يتصادم حتى عبر الخوادم أو قواعد البيانات المختلفة. رياضياً، هناك حوالي 16^32 = 2^128 احتمالًا. ومع ذلك، نظرًا لأن ستة بتات محجوزة للإشارة إلى المتغير والإصدار، فإن العدد الإجمالي من UUIDs الإصدار 4، المتغير 1 هو تقريبًا 2^122، حوالي 5.3 × 10^36 - وهو عدد كبير بشكل فلكي يضمن التفرد العملي.

ما مدى ضآلة 1 / 5,300,000,000,000,000,000,000,000,000,000,000,000

كل زوج من UUIDv4 لديه فرصة تقارب 1 في 5.3 × 10^36 للتطابق. هذا العدد صغير لدرجة أنه يكاد يرفض الوجود في خيال الإنسان. لتصوره، تخيل رمي 47 نردًا مرة واحدة. احتمالية الحصول على كل الأوجه رقم واحد - كل نرد يظهر "1" - هي حوالي 1 في 6^47، أو تقريبًا 1 في 3.7 × 10^36. هذا هو نفس حجم فرصة تصادم UUID. الآن، تخيل كل شخص على الأرض - حوالي ثمانية مليارات منا - يرمي تلك النردات الـ 47 كل ميلي ثانية لمدة تريليون عام. هذا حوالي 2.5 × 10^32 محاولة إجمالية. حتى بعد كل ذلك، فإن فرصة أن يحصل شخص ما في مكان ما على كل الأوجه رقم واحد ستكون واحدة في عشرة آلاف. هذا ما يجعل فرصة تصادم UUIDv4 مستحيلة الحدوث تقريبًا. إنها ليست "نادرة". إنها سخيفة كونيًا - النوع من الصدفة الذي يجعل علماء الرياضيات يسقطون قهوتهم ويتحققون من الكون بحثًا عن خلل.

هل من السهل توليد UUID

قد يبدو في البداية أن توليد UUID بسيط - بعد كل شيء، إنه مجرد سلسلة أبجدية رقمية تبدو عشوائية. ولكن جرب كتابة واحد بنفسك باستخدام القلم والورقة. يمكنك تدوين 36 حرفًا، بالتأكيد، ولكن إذا كررت التمرين آلاف المرات، ستظهر أنماط واضحة. ربما تفضل أرقام معينة مثل 3 أو 8، ونادراً ما تستخدم حروف مثل x. يمكن للكمبيوتر اكتشاف هذه الانحيازات فورًا. قد يقوم مخترق ضار بتحليل عاداتك وتضييق نطاق السلسلة "العشوائية" الخاصة بك في غضون يوم. ثم، ماذا لو لجأت أيضًا إلى الكمبيوتر واستدعت rand()، الوظيفة العشوائية الكلاسيكية، لتوليد كل رقم. هذا أفضل - ولكنه ليس جيدًا بما فيه الكفاية. العديد من مولدات الأرقام "العشوائية" في بيئات البرمجة الشائعة هي زائفة العشوائية، مما يعني أنها تتبع تسلسلًا رياضيًا متوقعًا يبدأ من بذرة داخلية، والتي عادةً ما تستند إلى وقت النظام. إذا اكتشف شخص ما تلك البذرة أو خمّنها، يمكنه إعادة إنتاج كل قيمة أنتجها مولدك.

ما مدى عشوائية UUID بشكل مثالي

العشوائية الكاملة لا توجد حقًا - تمامًا مثلما لا يوجد نرد مثالي، أو رمية نرد مثالية. كل عملية مادية أو رقمية تتبع بعض القوانين الأساسية. ومع ذلك، قضى علماء الرياضيات والمهندسون عقودًا في تصميم خوارزميات تقترب قدر الإمكان من العشوائية الحقيقية. عندما تنشئ Splync UUID إصدار 4 جديدًا، فهي لا "تختار الأرقام بشكل عشوائي" مثل رمي النرد. تطلب من نظام التشغيل بعض آثار عدم التوقع الصغيرة - على سبيل المثال، اللحظة الدقيقة التي ينهي فيها وحدة المعالجة المركزية مهمة، ضجيج كهربائي خافت داخل الأجهزة، أو تقلبات توقيت الخلفية في الذاكرة. يتم جمع ومزج هذه الشظايا من الانتروبيا في 128 بت من البيانات - سلسلة طويلة من الواحدات والأصفار. والنتيجة هي رمز من المستحيل تقريبًا تخمينه أو تكراره لمستخدمي التطبيق أو المتسللين المحتملين.

نهج Splync المزدوج للمعرفات

تستخدم Splync UUIDs للمعرفات الحساسة مثل معرفات المستخدمين ومعرفات المشاريع لأنها عشوائية جدًا وآمنة. في الوقت نفسه، داخل الخادم الخاص بها، تحول Splync هذه UUIDs إلى أعداد صحيحة يتم زيادتها تلقائيًا للبحث السريع والتحليلات على مجموعات البيانات الكبيرة. يوازن هذا النهج المزدوج بين الأمان والراحة - الخصوصية الخارجية مع الأداء الداخلي. هدف Splync هو أن تكون تطبيقًا لتتبع الميزانية خالٍ من التوتر وبسيط وآمن. خلف واجهة المستخدم المرئية، نواصل تحسين هيكلنا للحفاظ على الأمور سلسة وآمنة وذكية بهدوء.