SCRU128: Sortable, Clock and Random number-based Unique identifier
Project description
SCRU128: Sortable, Clock and Random number-based Unique identifier
SCRU128 ID is yet another attempt to supersede UUID for the users who need decentralized, globally unique time-ordered identifiers. SCRU128 is inspired by ULID and KSUID and has the following features:
- 128-bit unsigned integer type
- Sortable by generation time (as integer and as text)
- 25-digit case-insensitive textual representation (Base36)
- 48-bit millisecond Unix timestamp that ensures useful life until year 10889
- Up to 281 trillion time-ordered but unpredictable unique IDs per millisecond
- 80-bit three-layer randomness for global uniqueness
import scru128
# generate a new identifier object
x = scru128.new()
print(x) # e.g., "036z951mhjikzik2gsl81gr7l"
print(int(x)) # as a 128-bit unsigned integer
# generate a textual representation directly
print(scru128.new_string()) # e.g., "036z951mhzx67t63mq9xe6q0j"
See SCRU128 Specification for details.
Command-line interface
scru128
generates SCRU128 IDs.
$ scru128
036zg4zlmdwdz8414eim77vct
$ scru128 -n 4
036zg4zlv707wnczl108ky4i7
036zg4zlv707wnczl12towmho
036zg4zlv707wnczl14hirm6n
036zg4zlv707wnczl17110shh
scru128-inspect
prints the components of given SCRU128 IDs as human- and
machine-readable JSON objects.
$ scru128 -n 2 | scru128-inspect
{
"input": "036zg552n91mt9s0gyhdwif95",
"canonical": "036zg552n91mt9s0gyhdwif95",
"timestampIso": "2022-03-20T08:34:01.493+00:00",
"timestamp": "1647765241493",
"counterHi": "10145723",
"counterLo": "13179084",
"entropy": "4167049657",
"fieldsHex": ["017fa6763e95", "9acfbb", "c918cc", "f86021b9"]
}
{
"input": "036zg552n91mt9s0gyj7i56sj",
"canonical": "036zg552n91mt9s0gyj7i56sj",
"timestampIso": "2022-03-20T08:34:01.493+00:00",
"timestamp": "1647765241493",
"counterHi": "10145723",
"counterLo": "13179085",
"entropy": "3838717859",
"fieldsHex": ["017fa6763e95", "9acfbb", "c918cd", "e4ce2fa3"]
}
License
Licensed under the Apache License, Version 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
scru128-3.0.3.tar.gz
(9.6 kB
view details)
Built Distribution
scru128-3.0.3-py3-none-any.whl
(10.7 kB
view details)
File details
Details for the file scru128-3.0.3.tar.gz
.
File metadata
- Download URL: scru128-3.0.3.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Darwin/23.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90fcc7bcbb4226bc5e888d3339fd9c1b0603424b3534b5b710beef507c0df9c5 |
|
MD5 | fc0386a0a3d2cd21292221622f92f65d |
|
BLAKE2b-256 | 8180e06eab1e2d0a187a71398da226d1f8bf9199719ac911eed24e2c78ef00fb |
File details
Details for the file scru128-3.0.3-py3-none-any.whl
.
File metadata
- Download URL: scru128-3.0.3-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Darwin/23.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb3e5117f5d39cf4fb902eb3e703bc9afddf0a49fb4baaffcc800b010262beac |
|
MD5 | fcfd1c55bf265e50408afed044f4f57b |
|
BLAKE2b-256 | 125c9dadaf0980c8cc7d866e27be9dbf9913ade9561a37c4a8aa07fad14b5277 |