مقارنة شاملة لكل أنواع الـ 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
المشاهدات
807
x32x01
x32x01
x32x01
الردود
0
المشاهدات
214
x32x01
x32x01
x32x01
الردود
0
المشاهدات
771
x32x01
x32x01
x32x01
الردود
0
المشاهدات
393
x32x01
x32x01
x32x01
الردود
1
المشاهدات
660
x32x01
x32x01
الوسوم : الوسوم
cuid firebase push id identifiers ksuid nanoid objectid snowflake id ulid unique id generation uuid
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,320
المشاركات
2,533
أعضاء أكتب كود
567
أخر عضو
Mohaned
عودة
أعلى