מחולל UUID
יצירת מזהים ייחודיים — UUID v4 ו-v7
מה זה UUID?
UUID (Universally Unique Identifier) הוא מזהה של 128 ביט (16 בתים), שמוצג בדרך כלל כ-32 תווים הקסדצימליים מופרדים במקפים: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx. המטרה היא לייצר מזהים ייחודיים ללא צורך בתיאום בין שרתים — שני שרתים שונים יכולים ליצור UUIDs ועדיין להיות בטוחים שהם לא יתנגשו.
UUID v4 — אקראי טהור
v4 מבוסס על 122 ביט של אקראיות. הסיכוי להתנגשות נמוך כל כך שבפועל הוא נחשב זניח — אפשר לייצר מיליארדי UUIDs ביום ולא לצפות לכפילות ב-100 שנה. זו הגרסה הנפוצה ביותר בקוד אפליקציה.
UUID v7 — ממוין בזמן
v7 (סטנדרט משנת 2024) משלב Unix timestamp ב-48 הביטים הראשונים + אקראיות. התוצאה: UUIDs שניתנים למיון כרונולוגי (ולכן יעילים כמפתחות ראשיים ב-DB ב-B-tree index), אבל עדיין ייחודיים. מומלץ לשימוש במסדי נתונים מודרניים שמבוססים על מיון.
v4 או v7?
- v4 — ברירת מחדל טובה כשהמזהה לא מגיע למסד נתונים אינדקסד, או כשחשוב שלא יהיה רמז לזמן היצירה
- v7 — כשה-UUID הולך לעמודת primary key ב-PostgreSQL/MySQL ואתה רוצה insert performance טוב יותר מ-v4
למה UUID ולא auto-increment?
מזהים עולים (1, 2, 3...) דורשים מקור אמת יחיד — מסד הנתונים. במערכות מבוזרות זה צוואר בקבוק. UUID מאפשר לכל שרת (ואפילו ללקוח במכשיר של המשתמש) לייצר מזהים ייחודיים לפני שהרשומה נשלחת לשרת, מה שמאיץ UIs אופטימיים ומפשט replication.