
- بواسطة x32x01 ||
زي ما اتكلمنا عن الـ UUID واصداراته بشكل عام
أيه هو الـ UUID - (Universally Unique Identifier)
هنتكلم عن الـ ULID واللي بدأ يظهر كبديل في مشاريع كتير وليه اتعمل أصلا ULID معناها
{Universally Unique Lexicographically Sortable Identifier}
وده برضه معرف فريد بيتولد عشوائي، لكن الفرق الأساسي انه sortable يعني بيتولد بطريقة تقدر ترتب بيها الـrecords بالوقت اللي اتعملت فيه
ال UUIDv4 صحيح عشوائي وبيحل مشكلة الduplicates، لكن كان ليه عيب كبير
الأرقام العشوائية اللي فيه بتخلي عملية الordering
أو الـindexing في databases تقيلة وصعبة
وده بيأثر على الperformance خصوصًا مع قواعد بيانات ضخمة
أول جزء من ULID بيمثل timestamp بالmillisecond
وتاني جزء random عشان يضمن uniqueness
وبكده تقدر ترتب بسهولة أي records حسب وقت إنشائها من غير ما تخسر ميزة uniqueness
وهو عبارة عن string من 26 character في Base32
وده بيخليه أقصر وأسهل في القراءة من UUID
2- Base32 representation → أقصر وأنضف في الشكل
3- High performance في indexing داخل databases زي MongoDB أو PostgreSQL
4- ينفع يتولد في distributed systems من غير ما يحصل collision
5- مناسب للlogs والتطبيقات اللي يهمك فيها الترتيب الزمني
- libraries بتاعته مش متوفرة بنفس القوة في كل اللغات
- randomness مش قوية زي UUIDv4 لأنها مقسومة مع timestamp
دلوقتي ULID
بيتشاف كبديل عملي لـUUID في الsystems
اللي بتحتاج ordering + performance
بينما UUID لسه الأقوى في التوافقية والstandardization
أيه هو الـ UUID - (Universally Unique Identifier)
هنتكلم عن الـ ULID واللي بدأ يظهر كبديل في مشاريع كتير وليه اتعمل أصلا ULID معناها
{Universally Unique Lexicographically Sortable Identifier}
وده برضه معرف فريد بيتولد عشوائي، لكن الفرق الأساسي انه sortable يعني بيتولد بطريقة تقدر ترتب بيها الـrecords بالوقت اللي اتعملت فيه
ال UUIDv4 صحيح عشوائي وبيحل مشكلة الduplicates، لكن كان ليه عيب كبير
الأرقام العشوائية اللي فيه بتخلي عملية الordering
أو الـindexing في databases تقيلة وصعبة
وده بيأثر على الperformance خصوصًا مع قواعد بيانات ضخمة
ULID
جه يحل المشكلة دي بفكرة بسيطةأول جزء من ULID بيمثل timestamp بالmillisecond
وتاني جزء random عشان يضمن uniqueness
وبكده تقدر ترتب بسهولة أي records حسب وقت إنشائها من غير ما تخسر ميزة uniqueness
شكل ULID
مثال: 01ARZ3NDEKTSV4RRFFQ69G5FAVوهو عبارة عن string من 26 character في Base32
وده بيخليه أقصر وأسهل في القراءة من UUID
مميزات ULID عن UUID
1- Lexicographically sortable → تقدر ترتب IDs بسهولة2- Base32 representation → أقصر وأنضف في الشكل
3- High performance في indexing داخل databases زي MongoDB أو PostgreSQL
4- ينفع يتولد في distributed systems من غير ما يحصل collision
5- مناسب للlogs والتطبيقات اللي يهمك فيها الترتيب الزمني
عيوب ULID
لسه مش standard رسمي زي UUID-- libraries بتاعته مش متوفرة بنفس القوة في كل اللغات
- randomness مش قوية زي UUIDv4 لأنها مقسومة مع timestamp
دلوقتي ULID
بيتشاف كبديل عملي لـUUID في الsystems
اللي بتحتاج ordering + performance
بينما UUID لسه الأقوى في التوافقية والstandardization