more tweaks
This commit is contained in:
parent
5f03effbf3
commit
f38e8536de
1 changed files with 18 additions and 10 deletions
|
@ -1,7 +1,7 @@
|
|||
+++
|
||||
title = "Presenting Julids: another fine sundry, by Nebcorp Heavy Industries and Sundries"
|
||||
title = "Presenting Julids, another fine sundry by Nebcorp Heavy Industries and Sundries"
|
||||
slug = "presenting-julids"
|
||||
date = "2023-07-29"
|
||||
date = "2023-07-31"
|
||||
[taxonomies]
|
||||
tags = ["software", "sundry", "proclamation", "sqlite", "rust", "ulid", "julid"]
|
||||
+++
|
||||
|
@ -10,9 +10,9 @@ tags = ["software", "sundry", "proclamation", "sqlite", "rust", "ulid", "julid"]
|
|||
Nebcorp Heavy Industries and Sundries, long the world leader in sundries, is proud to announce the
|
||||
public launch of the official identifier type for all Nebcorp companies' assets and database
|
||||
entries, [Julids](https://gitlab.com/nebkor/julid). Julids are globally unique sortable identifiers,
|
||||
backwards-compatible with [ULIDs](https://github.com/ulid/spec), but better.
|
||||
backwards-compatible with [ULIDs](https://github.com/ulid/spec), *but better*.
|
||||
|
||||
Inside your Rust program, simply add `julid-rs` to your project's `Cargo.toml` file, and use it
|
||||
Inside your Rust program, simply add `julid-rs`[^julid-package] to your project's `Cargo.toml` file, and use it
|
||||
like:
|
||||
|
||||
``` rust
|
||||
|
@ -206,7 +206,7 @@ $ cargo run --example=benchmark --release -- -n 30000 2> /dev/null
|
|||
That's about 24,000 IDs/millisecond; 24 *MILLION* per second!
|
||||
|
||||
The default optional Cargo features include implementations of traits for getting Julids into and
|
||||
out of SQLite via [SQLx](https://github.com/launchbadge/sqlx), and for generally
|
||||
out of SQLite with [SQLx](https://github.com/launchbadge/sqlx), and for generally
|
||||
serializing/deserializing with [Serde](https://serde.rs/), via the `sqlx` and `serde` features,
|
||||
respectively. One final default optional feature, `chrono`, uses the Chrono crate to return the
|
||||
timestamp as a [`DateTime`](https://docs.rs/chrono/latest/chrono/struct.DateTime.html) by adding a
|
||||
|
@ -226,12 +226,12 @@ here](/rnd/one-part-serialized-mystery-part-2)). What's, uh... what's up with th
|
|||
![marge just thinks they're neat][marge ids]
|
||||
<div class = "caption">we both just think they're neat</div>
|
||||
|
||||
Like Marge says, I just think they're neat! I'm not the only one; here are just some alternatives:
|
||||
Like Marge, I just think they're neat! We're not the only ones; here are just some related projects:
|
||||
|
||||
* Segment's [KSUID](https://segment.com/blog/a-brief-history-of-the-uuid/), released in 2017. This
|
||||
was possibly my first exposure to this idea. They're 36 bits larger than UUIDs or ULIDs, but
|
||||
otherwise very similar to ULIDs (and hence Julids)
|
||||
* [ULIDs](https://github.com/ulid/spec), as previously discussed at length
|
||||
* [ULIDs](https://github.com/ulid/spec), of course
|
||||
* [UUIDv7](https://www.ietf.org/archive/id/draft-peabody-dispatch-new-uuid-format-01.html#name-uuidv7-layout-and-bit-order);
|
||||
these are *very* similar to Julids; the primary difference is that the lower 62 bits are left up
|
||||
to the implementation, rather than always containing pseudorandom bits as in Julids (which use
|
||||
|
@ -255,8 +255,9 @@ before](/rnd/one-part-serialized-mystery-part-2/#next-steps-with-ids):
|
|||
> and so my next step is to write one of those, and remove the ID generation logic from the
|
||||
> application.
|
||||
|
||||
So, is this the last time I'll time I'll be writing at length about these things? It's hard to say for
|
||||
sure, but signs point to "yes". I hope you've found them at least a little interesting!
|
||||
Now that I've accomplished all I've set out to, is this the last time I'll time I'll be writing at
|
||||
length about these things? It's hard to say for sure, but signs point to "yes". I hope you've found
|
||||
them at least a little interesting!
|
||||
|
||||
# Thanks
|
||||
|
||||
|
@ -268,6 +269,13 @@ hours. Thank you, authors of those crates! Feel free to steal from this project!
|
|||
|
||||
----
|
||||
|
||||
[^julid-package]: The Rust crate *package's*
|
||||
[name](https://gitlab.com/nebkor/julid/-/blob/2484d5156bde82a91dcc106410ed56ee0a5c1e07/Cargo.toml#L2)
|
||||
is "julid-rs"; that's the name you add to your `Cargo.toml` file, that's how it's listed on
|
||||
[crates.io](https://crates.io/crates/julid-rs), etc. The crate's *library*
|
||||
[name](https://gitlab.com/nebkor/julid/-/blob/2484d5156bde82a91dcc106410ed56ee0a5c1e07/Cargo.toml#L24)
|
||||
is just "julid"; that's how you refer to it in a `use` statement in your Rust program.
|
||||
|
||||
[^monotonic]: At least, they will still have a total order if they're all generated within the same
|
||||
process in the same way; the code uses a [64-bit atomic
|
||||
integer](https://gitlab.com/nebkor/julid/-/blob/2484d5156bde82a91dcc106410ed56ee0a5c1e07/src/julid.rs#L11-12)
|
||||
|
@ -284,4 +292,4 @@ hours. Thank you, authors of those crates! Feel free to steal from this project!
|
|||
a thousand at a time, so you could use the timestamp to look up what machine any given 10-bit ID
|
||||
referred to?
|
||||
|
||||
[marge ids]: ./marge_thinks_theyre_neat.png "marge simpson holding a potato labeled 'globally unique sortable identifiers'"
|
||||
[marge ids]: ./marge_thinks_theyre_neat.png 'marge simpson holding a potato labeled "globally unique sortable identifiers"'
|
||||
|
|
Loading…
Reference in a new issue