Unexpected downsides of UUID keys in PostgreSQL

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Sevalla - Deploy and host your apps and databases, now with $50 credit!
Sevalla is the PaaS you have been looking for! Advanced deployment pipelines, usage-based pricing, preview apps, templates, human support by developers, and much more!
sevalla.com
featured
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
  1. ksuid

    K-Sortable Globally Unique IDs

    If size isn't an issue it seems so. I know of one implementation that uses wall clock to get a "close enough" sorting https://github.com/segmentio/ksuid

  2. Sevalla

    Deploy and host your apps and databases, now with $50 credit! Sevalla is the PaaS you have been looking for! Advanced deployment pipelines, usage-based pricing, preview apps, templates, human support by developers, and much more!

    Sevalla logo
  3. deterministic-guid-generator

    Create a deterministic GUID based on namespace Guid, a string and an optional version.

    Tbh. I love UUID's.

    The next thing i prefer is Deterministic UUID's,

    eg. DeterministicGuid.Create(tenantNamespace, "my-tenant-name");

    Note: https://github.com/Informatievlaanderen/deterministic-guid-g... for dotnet.

  4. Tbh. I love UUID's.

    The next thing i prefer is Deterministic UUID's,

    eg. DeterministicGuid.Create(tenantNamespace, "my-tenant-name");

    Note: https://github.com/Informatievlaanderen/deterministic-guid-g... for dotnet.

  5. flow

    🌊 Continuously synchronize the systems where your data lives, to the systems where you _want_ it to live, with Estuary Flow. 🌊 (by estuary)

    We use a macaddr8 that embeds a wall-clock timestamp (so they're ascending order, achieving data locality) with some additional randomness. It's worked really well for us:

    https://github.com/estuary/flow/blob/master/supabase/migrati...

    we use macaddr8 instead of bigint, because it has a postgres serialization / JSON encoding which lossless-ly round-trips with browsers and it works well with PostgREST. The same CANNOT be said for bigint, which is a huge footgun.

  6. typeid

    Type-safe, K-sortable, globally unique identifier inspired by Stripe IDs

    The stated downsides come from poor data locality when using mostly random UUIDs; but you can keep most of the benefits of a globally unique identifier, and retain locality, by using UUIDv7.

    At jetpack.io we've been doing exactly that via TypeIDs: https://github.com/jetpack-io/typeid and there's a PostgresSQL implementation available. TypeIDs are UUIDv7 with additional type information, so you also get type-safety in your IDs.

  7. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

Did you know that Go is
the 4th most popular programming language
based on number of references?