Библиотека для работы с уникальными идентификаторами MUID.
- Всегда уникален даже в распределённой системе. Позволяет генерировать MUID на клиенте без обращения к серверу.
- Монотонен. TS метка и счётчик позволяют оптимально добавлять новые записи в B-Tree.
- Подходит для распределённых и высоконагруженных систем. Каждый процесс получает свой отпечаток. Счётчик позволяет генерировать минимум 33554432 уникальных MUID в рамках одной миллисекунды.
- Мало предсказуем, даже зная
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-1E7C1CA4MUID состоит из 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.