Інструменти розробника · UUID генератор
ULID, Сніжинка, KSUID і UUIDv7: Сортовані IDs У порівнянні з
· Підземелля
Опубліковано ToolAcre · Редакція журналу
Увійти криптографія веб-сайт

Випадкові UUIDs не сортувати час створення, тому кілька форматів кладуть перший раз. Порівняти це повідомлення ULID, Сніжинка, KSUID і UUIDv7 на макеті, розмір, монотонність і сумісність.
Випадкові ідентифікатори та індекс, який не забирає їх — проблема, яка вирішує часові ідентифікатори
Випадкові v4 UUIDs розсіювання точок вставки через B-дерев'яний основний ключ, як нові записи прибути, викликаючи розділи сторінок і реорганізацію. Вставки на випадкових позиціях деградують продуктивність запису та значно підвищують фрагментацію диска. Висока пропускна база даних переносить цю вартість — ціна дійсно незалежних, неоднозначних ідентифікаторів — але вартість реальна. Якщо вам потрібно UUIDs для сортування, ви можете різко поліпшити показники індексу, додавши часовий префікс. У деяких форматах виникали: ULID, Сніжинка, KSUIDй RFC 9562 v7. Кожен робить різні торгові марки за розміром (26 символи до 128 bits), часовий прецизій (секунди наносекунди), UUID сумісність, і чи потрібна координація з генератором ID. Вдосконалюється продуктивність бендиксів бази даних, що показує вставку.
ULID — до 48-bit мілісекундний часовий апарат плюс 80 випадкові біти в 26 Crockford base32 символи, з монотонним варіантом
ULID (Універсально унікальний лексико-різноманітний відступник) кодує 48-bit мілісекундний час імп 80-розрядний випадковий перевантаження в режимі реального часу 26 символи Crockford base32. Текстове представлення відсортовує правильність у лексографічному порядку, що робить ULIDs, придатними для систем, де часовий час, часовий замовлення та читабельність. Обробка журналу, розподілене відстеження, мікросервіси, де ідентифікатори повинні бути легко прочитані в людському виводі. ULID пропонує монотонний варіант, де багаторазові ідентифікатори, що створюються в межах одного тисячоліть, що призводить до випадкової частини замість повторення, забезпечуючи рівномірний швидкий ID, лопається, зберігаючи суворе замовлення покоління. Зліт є те, що ULID не є UUID: він не підходить в стандарті 128-розсилка UUID стовпчик бази даних без перетворення. ULID точність покриває приблизно 8925 роки.
Сніжинка — 64-bit ID з таймера, ідентифікатор працівника і послідовність, і координація, яку вони вимагають
Сніжинка - це 64-bit ідентифікатор спочатку розроблений Twitter, структурований як 41-bit мілісекундний час, a 10-бітний ідентифікатор працівника, і 12- номер послідовності. Про нас 41-розташуйте часові запаси приблизно 69 роки і переливи 2106епоха координація та міграційне планування. Ідентифікатор робітників, які генеруються різними серверами або процесами. Сніжинка 64 bits замість 128, зробивши його половину розміром UUID, швидше індексувати та більший коефіцієнт зберігання за ідентифікатором. В залежності від часу і ідентифікатора працівника, корисний для маршрутизації запитів або журналів за допомогою джерела. Режим роботи: кожен генератор повинен бути призначений для ідентифікатора працівника, годинники повинні зберігати синхронізацію.
KSUID — секунди часу з великим випадковим навантаженням, відсортовано як байти
KSUID (K-Sortable унікальний видентифікатор) є 128-bit ідентифікатор, що складається з 32-bit Unix другий разовий і 96-bit випадковий перевантаження, як правило, закодовано як 27 base62 символи. Формат відрізняється лексико-графічним порядком, а випадкова частина криптографічно звучать за розмірами. KSUID менш широко прийнято, ніж ULID або Snowflake але пропонує відмінні семантики: часовий апарат легко декодується до людно-прочитаного другого (зловживання в журналах і дебулінгах), а також часовий апарат легко декодується людині, що є в стані пізнання (зловживання в журналах і дебулінгах), і в той час як час 96-bit випадкова частина є досить велика, що багаторазові KSUIDs, що створюються в одному другому, мають ефективно повторювану ймовірність без узгодження послідовності. На відміну від сніжинки, KSUID не вимагає узгодження ідентифікаторів працівника або центрального розподілу. KSUID працює на секундах, а не мілісекунди, тому кілька ідентифікаторів в одному другому сорті випадково, якщо ви впровадите додаткову логіку.
UUIDv7 — відповідь на стандарти, що відповідає існуючим увімкненим стовпчикам та інструментам
RFC 9562 v7 є av3 128-bit ідентифікатор, що складається з 48-bit Unix мілісекундний часовий апарат, 12 bits суб-мілісекундної точності (здатний як лічильник послідовності), так і 62 випадкові біти всі комбіновані. Відсортовано як лексико-символовий рядок, так і як 128-розміщені байти в базах даних. Зловживання, це дійсний UUID—налаштування версії ніблука до 7 і варіанти бітів до RFC 9562 стандарт, що дозволяє сумісно з кожним інструментом, колонкою бази даних та API що ручить UUIDs. Немає необхідності перетворення кодування, і існуючі UUID інфраструктура не вимагає модифікації. Якщо у вас є кілька ідентифікаторів v7, які генеруються в одному мілісекунді, RFC 9562 рекомендує використовувати суб-міллісекундне поле як монотонний лічильник, а не випадкових біт. V7 являє собою прагматичний вибір для підтримки UUID сумісність.
Монотонічнаність в одному мілісекунді — як кожен формат ручок лопається і чому він має значення для гарантій замовлення
Монотонічнаність – це властивість, що якщо в спостережному порядку відбуваються два заходи, їх ID порівняти. На рівні мілісекунду гранульованості на сучасному обладнанні, кілька подій, що відбуваються в межах одного годинника, тому будь-яка сортова схема ID повинна оброблятися під-мілісекундно. ULID пропонує явний монотонний режим, де випадкові порції замість випадкового визначення. Сніжинка містить 12- номер послідовності, який викликає в межах мілісекунду. KSUID не додано вбудований механізм, тому субсекундні події, що відбуваються випадково, якщо додана додаткова логіка. RFC 9562 v7 рекомендує використовувати суб-мілісекундне поле як монотонний лічильник. Якщо ваша система виробляє тисячі UUIDs на другий, монотонічний характер в межах мілісекунду значно впливає на замовлення запитів.
Що це не охоплює — бендикти пропускної здатності, які залежать від апаратних та мовних ресурсів; пост залишається якісною
Дані про пропускні потужності не включені, оскільки вони сильно залежать від апаратної архітектури, мовної реалізації, бази даних двигуна та стратегії кешування. Дані бази даних значно відрізняються тим, чи використовується вами випадкових вставок, запитів діапазону, індексних накладних або загальним пропускним шляхом при реалістичному навантаженні виробництва. Пост продовжує якісно, порівнюючи формати концептуально на основі своїх конструкцій, а не надання особливої кількості, які можуть бути введеними в оману. Оцінка продуктивності в реальному часі вимагає тестування в власних умовах з власним завантаженням, базою коду та експлуатаційними обмеженнями. Визначте різні формати ідентифікаторів є цінним вправою.
Перегляньте: часто вирішується сумісність — ToolAcre генератор виробляє випадкові UUIDs; використовувати його добре сформовану перевірку, щоб підтвердити, що UUIDv7 з ваших бібліотечних пар, як UUID
Часто вирішує формат, який вибрати. Якщо Ваше ім'я не потрібно UUID стовпчики, v7 - це сучасна відповідь на сортування без залишку UUID екосистема. Якщо створити нову систему з користувацькими типами ідентифікаторів, ULID пропонує менші текстові переваги та переваги фрезерісекунду. Якщо вам потрібно 64-розташування та управління координацією ідентифікаторів працівника через централізоване виділення, Snowflake є перевіреним вибором в системах високої потужності. Основою торгової марки є між стандартною сумісністю (хозе v7) та альтернативними властивостями, такими як менший розмір (Сніжинка) або base32 читабельність (ULID... Зробіть вибір на основі системних обмежень та рішень екосистеми.