🛠️

Whiz Tools

Build • Create • Innovate

Генератор K-сортируемых уникальных идентификаторов (KSUID)

Генерируйте K-сортируемые уникальные идентификаторы (KSUID) для использования в распределенных системах, базах данных и приложениях, требующих уникальных, сортируемых по времени ключей. KSUID объединяет временную метку с случайными данными для создания устойчивых к коллизиям, сортируемых идентификаторов.

Генератор KSUID

📚

Документация

Генератор KSUID

Введение

KSUID (K-Sortable Unique IDentifier) — это формат уникального идентификатора, который предлагает несколько преимуществ по сравнению с традиционным UUID (Универсальный Уникальный Идентификатор) и другими системами идентификаторов. Этот инструмент позволяет быстро и легко генерировать KSUID.

Что такое KSUID?

KSUID — это 20-байтовый сортируемый идентификатор, который состоит из:

  1. 32-битного временного штампа (4 байта)
  2. 16 байтов случайности

При представлении в виде строки KSUID кодируется в base62 и имеет длину 27 символов.

Структура KSUID

Структура KSUID может быть разбита следующим образом:

  1. Временной штамп (4 байта): Это представляет количество секунд с начала эпохи Unix (1 января 1970 года, 00:00 UTC). Временной штамп позволяет KSUID быть примерно сортируемыми по времени генерации.

  2. Случайный компонент (16 байтов): Это криптографически безопасное случайное число, которое обеспечивает уникальность даже при генерации нескольких KSUID в одну секунду.

  3. Кодирование Base62: Объединенные 20 байтов (временной штамп + случайный) затем кодируются с использованием base62 (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 байтов)

Сценарии использования KSUID

KSUID особенно полезны в следующих сценариях:

  1. Распределенные системы: Когда вам нужны уникальные идентификаторы на нескольких серверах или службах без координации.

  2. Сортируемые по времени данные: Когда вы хотите сортировать данные по времени создания без хранения отдельного временного штампа.

  3. Ключи базы данных: В качестве первичных ключей в базах данных, особенно в распределенных базах данных, где автоинкрементные целые числа не подходят.

  4. Безопасные для URL идентификаторы: Для создания коротких, уникальных, безопасных для URL идентификаторов для ресурсов в веб-приложениях.

  5. Корреляция логов: Для корреляции записей логов между различными службами в архитектуре микросервисов.

Преимущества KSUID

KSUID предлагают несколько преимуществ по сравнению с другими системами идентификаторов:

  1. Сортируемость: В отличие от UUID, KSUID могут быть отсортированы хронологически, что полезно для индексирования баз данных и анализа логов.

  2. Не требуется координация: В отличие от автоинкрементных идентификаторов, KSUID могут быть сгенерированы независимо разными серверами без риска коллизий.

  3. Компактное представление: Длина KSUID составляет 27 символов, что меньше, чем у UUID, когда они представлены в виде строк.

  4. Временной штамп встроен: Встроенный временной штамп позволяет выполнять сортировку и фильтрацию на основе времени без необходимости в отдельном поле временного штампа.

  5. Безопасность для URL: Кодирование base62 делает KSUID безопасными для использования в URL без дополнительного кодирования.

  6. Сниженная вероятность коллизий: 16-байтовый случайный компонент делает коллизии крайне маловероятными, даже при высоких скоростях генерации.

Как использовать этот генератор

  1. Введите любые дополнительные параметры, если это необходимо (например, пользовательский временной штамп).
  2. Нажмите кнопку "Сгенерировать KSUID", чтобы создать новый KSUID.
  3. Сгенерированный KSUID будет отображен в поле вывода.
  4. Вы можете генерировать несколько KSUID, повторяя шаги 1-3.
  5. Используйте кнопку "Копировать" рядом с каждым KSUID, чтобы скопировать его в буфер обмена.
  6. При желании используйте функцию "Экспорт", чтобы скачать список сгенерированных KSUID.

Помните, что каждый KSUID уникален и должен использоваться только один раз. Генерируйте новый KSUID каждый раз, когда вам нужен уникальный идентификатор.

Примеры кода

Вот примеры генерации KSUID на различных языках программирования:

1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Сгенерированный KSUID: {new_id}")
6

Ссылки

  1. Репозиторий KSUID на GitHub от 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
🔗

Связанные инструменты

Откройте для себя больше инструментов, которые могут быть полезны для вашего рабочего процесса