Skip to content

magicaleks/muid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MUID (Magic Unique Identifier)

CI PyPI version Python 3.10+ License

Библиотека для работы с уникальными идентификаторами MUID.

Почему MUID?

  1. Всегда уникален даже в распределённой системе. Позволяет генерировать MUID на клиенте без обращения к серверу.
  2. Монотонен. TS метка и счётчик позволяют оптимально добавлять новые записи в B-Tree.
  3. Подходит для распределённых и высоконагруженных систем. Каждый процесс получает свой отпечаток. Счётчик позволяет генерировать минимум 33554432 уникальных MUID в рамках одной миллисекунды.
  4. Мало предсказуем, даже зная ts и proc_fn математически сложно угадать следующий MUID за счёт secure rand. ВАЖНО: размер и стойкость secure rand может меняться в будущих версиях. Для реальной энтропии требуется от 36 битов, я взял 40 бит.

Быстрый старт

Установите пакет

pip install magicid

И создайте первый MUID

from muid import MagicID

muid = MagicID()

print(muid)
# 0001-8EA1C900-0F6F8410-1E7C1CA4

Принцип работы

MUID состоит из 4 частей: [ts ms 42 bits]-[counter 13 bits]-[proc_fn 17 bits]-[secure rand 40 bits]

Всего 14 байт, в HEX представлении 31 символ, включая дефисы.

При инициализации пакета генерируется proc_fn и используется до следующей инициализации. При переполнении counter ждёт до следующей миллисекунды (ref. Snowflake ID)

Лицензия

Проект инициирован, разработан и поддерживается Aleksandr @magicaleks. Распространяется на основании лицензии Apache-2.0.

Releases

No releases published

Packages

 
 
 

Contributors

Languages