مقارنة شاملة لكل أنواع الـ Identifiers 2026

x32x01
  • بواسطة x32x01 ||
بعد ما خلصنا السلسلة واتكلمنا عن كل أنواع الـ Identifiers، من UUID لحد Firebase Push IDs
هنعمل مقارنة شاملة تبين كل نوع وفايدته بطريقة بسيطة وسهلة 👇.

1- UUID (Universally Unique Identifier) 📝

  • اتعمل في التسعينات، وتوثق رسميًا سنة 2005 (RFC 4122)
  • أقدم وأشهر نوع من الـ Identifiers
  • معمول لتوليد أرقام فريدة على أي جهاز من غير تكرار
  • طويل جدًا (128-bit)، مش sortable وصعب على البشر يقرؤوه

2- MongoDB ObjectId 💾

  • ظهر حوالي 2009، default في MongoDB
  • بيتكون من timestamp + machine + process + counter
  • شبه sortable، حجمه أصغر من UUID (12 byte)
  • ممتاز لو شغال على MongoDB

3- Snowflake ID (Twitter) 🐦

  • اتعمل في تويتر حوالي 2010
  • 64-bit مبني على timestamp + worker + sequence
  • IDs مرتبة زمنيًا، scalable جدًا
  • بيعتمد على clock sync، لو فيه مشاكل في الساعة ممكن يحصل conflict

4- Sonyflake ⚡

  • نسخة أخف من Snowflake مكتوبة بـ Go
  • أسرع في التوليد، ومتجنب مشاكل clock sync
  • مناسب للـ Go apps، لكن محدود في الانتشار

5- Firebase Push IDs 📲

  • معمولة مخصوص للـ Firebase Realtime Database
  • IDs تتولد client-side، تجمع بين timestamp + randomness
  • قصيرة و URL-friendly، لكن مربوطة بالكامل بـ Firebase ecosystem

6- KSUID (K-Sortable Unique ID) 🔑

  • ظهر حوالي 2017
  • بيجمع timestamp دقيق + randomness قوي
  • IDs مرتبة زمنيًا، قابلة للفرز، Base62 string قصير
  • يوازن بين uniqueness، portability، وordering

7- ULID (Universally Unique Lexicographically Sortable Identifier) 📦

  • حل لمشاكل UUID الطويل
  • Readable، URL-friendly، sortable
  • randomness أضعف شوية من KSUID
  • مناسب لو عايز IDs سهلة القراءة والترتيب

8- NanoID 🔗

  • بديل خفيف للـ UUID
  • Customizable، crypto secure
  • IDs قصيرة ومناسبة للـ frontend apps والـ URLs
  • ممتاز لو عايز IDs قصيرة وسهلة التعامل

9- CUID (Collision-resistant Unique Identifier) 🛡️

  • ظهر حوالي 2018
  • Readable أكتر من UUID، فيه prefix يفرق بين الـ IDs
  • مقاوم جدًا للتكرار (collision-resistant)
  • مناسب للـ web apps، لكنه مش مشهور زي NanoID أو UUID



باختصار شديد ⚡

  • لو عايز standard عالمي: UUID
  • لو شغال بـ MongoDB: ObjectId
  • لو عندك scalability عالي: Snowflake أو Sonyflake
  • لو عايز sortable وportable: KSUID أو ULID
  • لو عايز IDs قصيرة: NanoID
  • لو عايز collision resistance: CUID
  • لو شغال بـ Firebase: Push IDs

الخلاصة 💡

دي كانت رحلة كاملة من أول UUID في التسعينات، لحد Firebase Push IDs اليوم.
كل نوع ظهر عشان يحل مشاكل اللي قبله ويوفر حل لمشكلة واقعية في الـ systems.
  • شخصيًا، أنا باستخدم UUID ✅
  • كل نوع له استخدامه المناسب حسب احتياجات المشروع.
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
9
x32x01
x32x01
x32x01
الردود
0
المشاهدات
575
x32x01
x32x01
x32x01
الردود
0
المشاهدات
438
x32x01
x32x01
x32x01
الردود
1
المشاهدات
539
x32x01
x32x01
x32x01
الردود
0
المشاهدات
94
x32x01
x32x01
x32x01
الردود
0
المشاهدات
224
x32x01
x32x01
x32x01
الردود
0
المشاهدات
648
x32x01
x32x01
x32x01
الردود
0
المشاهدات
623
x32x01
x32x01
x32x01
الردود
0
المشاهدات
40
x32x01
x32x01
x32x01
الردود
0
المشاهدات
756
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,938
المشاركات
2,138
أعضاء أكتب كود
478
أخر عضو
anashanashanash
عودة
أعلى