- بواسطة x32x01 ||
بعد ما اتكلمنا عن UUID، ULID، Snowflake ID، KSUID، MongoDB ObjectId، و NanoID، هنتكلم عن CUID.
الـ CUID معناها Collision-resistant Unique Identifier، والهدف الأساسي منه:
الـ CUID معناها Collision-resistant Unique Identifier، والهدف الأساسي منه:
- يكون أبسط من UUID
- أصغر في الحجم للتخزين
- أسهل في القراءة
- مقاوم لأي collision حتى في الأنظمة الكبيرة 🛡️
CUID بيتكون من إيه؟ 🧩
الـ CUID متقسم لعدة أجزاء:- Prefix ثابت (عادة حرف “c”) 🔤
بيميز كل CUID عن باقي أنواع الـ IDs. - Timestamp ⏱️
عشان الـ IDs تبقى مرتبة زمنيًا. - Counter 🔢
بيت increment مع كل ID جديد لتقليل التكرار. - Fingerprint 🖥️
بيعتمد على الجهاز أو البيئة اللي تولد فيها الـ CUID، عشان يضيف طبقة حماية. - Random block 🎲
بيزود الأمان ويقلل احتمالية التكرار أو collision.
شكل الـ CUID ✨
مثال على CUID:ckbq9y4hf0001gq5t4q9k5s7f- عبارة عن string مقروء أكتر من UUID
- مش طويل بنفس درجة UUID، وده بيخليه سهل التعامل والنسخ.
مميزات CUID 🌟
- مقاومة عالية جدًا لأي collision 🛡️
تقدر تستخدمه في أنظمة كبيرة من غير خوف من تكرار الـ IDs. - Readable 👀
أسهل في القراءة والفهم من UUID العادي. - Prefix ثابت 🔤
بيساعد في تمييز الـ ID بسهولة في أي application. - أسرع وأخف في التخزين والindexing ⚡
مقارنة بـ UUID، بيخلي الأداء أفضل ويقلل استهلاك الذاكرة. - مناسب للـ Web Apps وAPIs 🌐
لو عايز IDs consistent يعني شكل ثابت وسهل التعامل معاه.
عيوب CUID ⚠️
- مش standard رسمي زي UUID ❌
يعني interoperability مع أنظمة تانية محتاجة انتباه. - مش مشهور زي NanoID أو ObjectId 🌍
استخدامه أقل من الحلول التانية. - أطول من NanoID لكنه أقصر من UUID 📝
فممكن مش يكون الخيار الأنسب لو عايز IDs super قصيرة.
ليه CUID حل عملي؟ 💡
- IDs readable + collision-resistant + lightweight
- مناسب لأي Web App أو API محتاجة IDs ثابتة وسهلة التعامل.
- بيوفر توازن بين الحجم، الأمان، والسهولة في الاستخدام مقارنة بالـ IDs التانية.
التعديل الأخير: