- بواسطة x32x01 ||
بعد ما اتكلمنا عن UUID، ULID، Snowflake ID، KSUID، MongoDB ObjectId، NanoID، و CUID، هنتكلم عن النوع القبل الأخير في السلسلة: Sonyflake.
الـ Sonyflake هو نسخة مطورة من Snowflake ID مكتوبة بلغة Go، اتعملت عشان تعالج مشاكل ظهرت في Snowflake وتكون أبسط وأسرع في نفس الوقت
.
الفكرة الأساسية ورا Sonyflake
الـ Sonyflake مبني على نفس أسس Snowflake لكن مع تحسينات مهمة:
شكل Sonyflake
مميزات Sonyflake
عيوب Sonyflake
ليه Sonyflake مفيد؟
الـ Sonyflake هو نسخة مطورة من Snowflake ID مكتوبة بلغة Go، اتعملت عشان تعالج مشاكل ظهرت في Snowflake وتكون أبسط وأسرع في نفس الوقت
الفكرة الأساسية ورا Sonyflake
الـ Sonyflake مبني على نفس أسس Snowflake لكن مع تحسينات مهمة:- IDs مبنية على Timestamp + Machine ID + Sequence Counter

زي Snowflake بالضبط، بس محسّنة لتكون أكثر موثوقية. - تجنب مشاكل الاعتماد الكامل على Clock Sync

واحدة من أبرز مشاكل Snowflake كانت إن أي اختلاف في الساعة ممكن يسبب مشاكل. - Suitable للأنظمة المبنية بـ Go

لو عندك مشروع مكتوب بـ Go وعايز IDs sequential وموثوقة، Sonyflake مناسب جدًا.
شكل Sonyflake
- الـ IDs بتتولد كـ 64-bit integers زي Snowflake.
- مثال:
281474976710656 - أقصر وأسهل في التخزين مقارنة بالـ UUID الطويل.
مميزات Sonyflake
- IDs مرتبة زمنيًا

سهل تعمل sorting للبيانات حسب الـ ID نفسه. - خفيف وأسرع في التوليد

أسرع بكثير من UUID وبأداء ممتاز. - Randomness كافية

تمنع أي احتمال للتكرار أو collision. - بيتفادى مشاكل Clock Drift

واحدة من أهم تحسيناته على Snowflake. - مناسب للـ Distributed Systems المبنية بـ Go

خاصة لو عايز IDs موثوقة وسلسة للـ microservices.
عيوب Sonyflake
- مش standard زي UUID أو ULID

يعني interoperability مع أنظمة تانية محتاجة انتباه. - معتمد على بيئة Go

مش منتشر بنفس الدرجة في لغات البرمجة التانية. - مش readable زي ULID أو NanoID

مجرد رقم كبير، صعب على البشر يقرؤوه أو يتعاملوا معاه مباشرة.
ليه Sonyflake مفيد؟
- يعتبر upgrade عملي للـ Snowflake.
- مناسب لأي نظام محتاج ordering + performance + reliability.
- رغم كده، ما خدش نفس الشهرة العالمية زي ULID أو KSUID، لكنه ممتاز للمشاريع الكبيرة المكتوبة بـ Go.