
- بواسطة x32x01 ||
بعد ما اتكلمنا عن الـ UUID والـ ULID
نيجي بقى لـ Snowflake IDs يمكن كتير من الناس مسمعتش عنه ويمكن كمان هتتفاجيء بالنوع ده من ال IDs
النوع ده اشتهر من تويتر وبقت standard في شركات كتير
فكرة Snowflake بدأت لما تويتر كان محتاج system يولد IDs بسرعة رهيبة
وفي نفس الوقت تبقى IDs دي مرتبة بالزمن
وتشتغل على distributed servers من غير ما يحصل أي conflict
2- تاني جزء: machine ID عشان يفرق كل سيرفر عن التاني
3- تالت جزء: sequence number عشان لو في نفس السيرفر اتولد أكتر من ID في نفس اللحظة
بالشكل ده كل ID بيبقى unique + sortable بالوقت + قصير نسبيًا مقارنة بالUUID
شكل Snowflake ID
مثال: 1288834974657
وده عبارة عن رقم كبير (usually 64-bit integer) بيتخزن بسهولة وبيتقارن بسرعة جوه أي database
2- حجم أصغر من UUID
تخزين أسرع وindexes أخف
3- ينفع يتولد في distributed systems من غير ما يحصل duplicate
4- مناسب لأنظمة بتتعامل مع traffic ضخم زي تويتر، Discord، Instagram
أي اختلاف في الـclock ممكن يعمل مشاكل
2- محتاج infrastructure مظبوط عشان machine IDs ماتتصادمش
3- أقل مرونة في portability مقارنة بـUUID
دلوقتي Snowflake IDs يعتبروا حل عملي لمشاكل UUID في الـperformance والsorting
وده السبب إن شركات كتير اعتمدته كنظام أساسي للـidentifiers
نيجي بقى لـ Snowflake IDs يمكن كتير من الناس مسمعتش عنه ويمكن كمان هتتفاجيء بالنوع ده من ال IDs
النوع ده اشتهر من تويتر وبقت standard في شركات كتير
فكرة Snowflake بدأت لما تويتر كان محتاج system يولد IDs بسرعة رهيبة
وفي نفس الوقت تبقى IDs دي مرتبة بالزمن
وتشتغل على distributed servers من غير ما يحصل أي conflict
Snowflake ID بيتكون من إيه؟
1- أول جزء: timestamp بالmillisecond2- تاني جزء: machine ID عشان يفرق كل سيرفر عن التاني
3- تالت جزء: sequence number عشان لو في نفس السيرفر اتولد أكتر من ID في نفس اللحظة
بالشكل ده كل ID بيبقى unique + sortable بالوقت + قصير نسبيًا مقارنة بالUUID
شكل Snowflake ID
مثال: 1288834974657
وده عبارة عن رقم كبير (usually 64-bit integer) بيتخزن بسهولة وبيتقارن بسرعة جوه أي database
مميزات Snowflake IDs
1- IDs مرتبة زمنياً بشكل طبيعي (sortable)2- حجم أصغر من UUID
تخزين أسرع وindexes أخف
3- ينفع يتولد في distributed systems من غير ما يحصل duplicate
4- مناسب لأنظمة بتتعامل مع traffic ضخم زي تويتر، Discord، Instagram
عيوب Snowflake IDs
1- بيعتمد على توقيت السيرفراتأي اختلاف في الـclock ممكن يعمل مشاكل
2- محتاج infrastructure مظبوط عشان machine IDs ماتتصادمش
3- أقل مرونة في portability مقارنة بـUUID
دلوقتي Snowflake IDs يعتبروا حل عملي لمشاكل UUID في الـperformance والsorting
وده السبب إن شركات كتير اعتمدته كنظام أساسي للـidentifiers