🛠️

Whiz Tools

Build • Create • Innovate

גנרטור מזהים ייחודיים מסודרים לפי זמן (KSUID)

צור מזהים ייחודיים מסודרים לפי זמן (KSUIDs) לשימוש במערכות מבוזרות, מסדי נתונים ויישומים הדורשים מפתחות ייחודיים שניתן למיין לפי זמן. KSUIDs משלבים חותמת זמן עם נתונים אקראיים כדי ליצור מזהים חסינים להתנגשויות שניתן למיין.

גנרטור KSUID

📚

תיעוד

מחולל KSUID

מבוא

KSUID (מזהה ייחודי מסודר K) הוא פורמט מזהה ייחודי המציע מספר יתרונות בהשוואה ל-UUID (מזהה ייחודי אוניברסלי) ולמערכות מזהים אחרות. כלי זה מאפשר לך ליצור KSUIDs במהירות ובקלות.

מה זה KSUID?

KSUID הוא מזהה מסודר באורך 20 בייטים המורכב מ:

  1. חותמת זמן של 32 ביט (4 בייטים)
  2. 16 בייטים של אקראיות

כאשר הוא מיוצג כמחרוזת, KSUID מקודד בבסיס 62 ואורכו 27 תווים.

מבנה של KSUID

מבנה של KSUID ניתן לפרק כך:

  1. חותמת זמן (4 בייטים): זה מייצג את מספר השניות מאז אפוק Unix (1 בינואר 1970, בשעה 00:00 UTC). חותמת הזמן מאפשרת ל-KSUIDs להיות מסודרים בערך לפי זמן הייצור.

  2. רכיב אקראי (16 בייטים): זהו מספר אקראי מאובטח מבחינה קריפטוגרפית המבטיח ייחודיות גם כאשר מספר KSUIDs נוצרו באותה שנייה.

  3. קידוד בבסיס 62: 20 הבייטים המשולבים (חותמת זמן + אקראי) מקודדים לאחר מכן באמצעות בסיס 62 (A-Z, a-z, 0-9) כדי לייצר את המחרוזת הסופית באורך 27 תווים.

נוסחת KSUID

KSUID ניתן לייצוג מתמטי כך:

KSUID=Base62(TR)KSUID = Base62(T || R)

כאשר:

  • TT היא חותמת הזמן של 32 ביט
  • RR הוא רכיב האקראי של 128 ביט
  • || מייצג חיבור

חותמת הזמן TT מחושבת כך:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

כאשר KSUID_epoch הוא 1400000000 (2014-05-13T16:53:20Z).

דיאגרמת מבנה KSUID

חותמת זמן (4 בייטים) רכיב אקראי (16 בייטים)

שימושים עבור KSUIDs

KSUIDs שימושיים במיוחד בתרחישים הבאים:

  1. מערכות מבוזרות: כאשר אתה זקוק למזהים ייחודיים על פני מספר שרתים או שירותים ללא תיאום.

  2. נתונים מסודרים לפי זמן: כאשר אתה רוצה למיין נתונים לפי זמן יצירה מבלי לאחסן חותמת זמן נפרדת.

  3. מפתחות בסיס נתונים: כמפתחות ראשיים בבסיסי נתונים, במיוחד בבסיסי נתונים מבוזרים שבהם מספרים אוטומטיים לא מתאימים.

  4. מזהים בטוחים ל-URL: ליצירת מזהים קצרים, ייחודיים ובטוחים ל-URL עבור משאבים ביישומי אינטרנט.

  5. קורלציה של יומנים: לקשר בין רשומות יומן בין שירותים שונים בארכיטקטורת מיקרו-שירותים.

יתרונות של KSUIDs

KSUIDs מציעים מספר יתרונות על פני מערכות מזהים אחרות:

  1. מסודרות: בניגוד ל-UUIDs, KSUIDs יכולים להיות מסודרים כרונולוגית, מה שיכול להיות מועיל לאינדוקס בסיסי נתונים ולניתוח יומנים.

  2. אין צורך בתיאום: בניגוד למזהים אוטומטיים, KSUIDs יכולים להת生成 באופן עצמאי על ידי שרתים שונים מבלי לסכן התנגשויות.

  3. ייצוג קומפקטי: באורך 27 תווים, KSUIDs קומפקטיים יותר מ-UUIDs כאשר הם מיוצגים כמחרוזות.

  4. חותמת זמן מוטמעת: חותמת הזמן המוטמעת מאפשרת מיון וסינון מבוססי זמן מבלי להזדקק לשדה חותמת זמן נפרד.

  5. בטוחים ל-URL: הקידוד בבסיס 62 הופך את KSUIDs לבטוחים לשימוש ב-URLs ללא קידוד נוסף.

  6. הפחתת הסתברות התנגשויות: רכיב האקראי של 16 בייטים עושה התנגשויות לא סבירות במיוחד, אפילו בקצב ייצור גבוה.

כיצד להשתמש במחולל זה

  1. הזן כל פרמטרים נוספים אם יש צורך (למשל, חותמת זמן מותאמת).
  2. לחץ על כפתור "צור KSUID" כדי ליצור KSUID חדש.
  3. ה-KSUID שנוצר יוצג בשדה הפלט.
  4. אתה יכול ליצור מספר KSUIDs על ידי חזרה על שלבים 1-3.
  5. השתמש בכפתור "העתק" שליד כל KSUID כדי להעתיק אותו ללוח שלך.
  6. אופציונלי, השתמש בפיצ'ר "ייצוא" להורדת רשימה של KSUIDs שנוצרו.

זכור שכל KSUID הוא ייחודי ויש להשתמש בו רק פעם אחת. צור KSUID חדש בכל פעם שאתה זקוק למזהה ייחודי.

דוגמאות קוד

הנה דוגמאות ליצירת KSUIDs בשפות תכנות שונות:

1## פייתון
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"KSUID שנוצר: {new_id}")
6

מקורות

  1. מאגר KSUID של Segment: https://github.com/segmentio/ksuid
  2. "יצירת מזהים ייחודיים טובים" מאת פיטר בורגון: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. מפרט KSUID: https://github.com/segmentio/ksuid/blob/master/README.md