pg_easy_replicate
ksuid
pg_easy_replicate | ksuid | |
---|---|---|
11 | 38 | |
834 | 4,691 | |
- | 1.0% | |
8.7 | 3.1 | |
3 days ago | 7 months ago | |
Ruby | Go | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pg_easy_replicate
-
Zero Downtime Postgres Upgrades
This is great! I wrote a tool that automates most of the things you came across. If you find it useful or would like to extend it with your feedback/ideas, I'd love to have them! Thanks for sharing
https://github.com/shayonj/pg_easy_replicate
- Minimal downtime major PostgreSQL version upgrades with pg_easy_replicate
-
Zero downtime major PostgreSQL upgrades with pg_easy_replicate
These are great shouts! Thank you so much for sharing. One of the operations I ran with this was ~500GB and yeah it takes a few hours to catchup. For us, it wasn't an issue, especially also since we were on AWS Aurora. However, that said, I can totally see it being not feasible on other database engine/systems. I considered the idea of dropping all the indices and re-creating it once the catch up is complete. I'd like pg_easy_replicate it to support that. It should make the initial COPY lot more swift. On a 200GB large DB it cut down down the total time by 90%.
Re: bi-directional replication, you read my mind :). https://github.com/shayonj/pg_easy_replicate/blob/8df94aa93f...
These two features are top of my list to support in pg_easy_replicate
- Show HN: Minimal downtime PostgreSQL upgrades with pg_easy_replicate
- Minimal Downtime Postgres Upgrades with Pg_easy_replicate
ksuid
- What happens after 100 years?
-
Zero Downtime Postgres Upgrades
OP here - we avoid sequences in all but one part of our application due to a dependency. We use [KSUIDs][1] and UUID v4 in various places. This one "gotcha" applies to any sequence, so it's worth calling out as general advice when running a migration like this.
[1]: https://segment.com/blog/a-brief-history-of-the-uuid/
-
Bye Sequence, Hello UUIDv7
UUID v4 isn't large enough to prevent collisions, that is why segment.io created https://github.com/segmentio/ksuid which is 160bit vs the 128bit of a UUIDv4.
- You Don't Need UUID
- A Brief History of the UUID
-
Type-safe, K-sortable, globally unique identifier inspired by Stripe IDs
Assuming you don't need to use UUIDv7 (or any UUID's) then https://github.com/segmentio/ksuid provides a much bigger keyspace. You could just append a string prefix if you wanted to namespace, but the chance of collisions of a KSUID is many times smaller than a UUID of any version.
-
Unexpected downsides of UUID keys in PostgreSQL
KSUID's are have temporal-lexicographical order plus 128 bits of entropy, which is more than UUIDv4.
https://github.com/segmentio/ksuid
-
UUIDs are so much better than autoincrementing ids and it's not even close
That's why you use ksuid (https://segment.com/blog/a-brief-history-of-the-uuid/) or, if you're willing to go with a draft spec you could go with the new UUID formats https://www.ietf.org/archive/id/draft-ietf-uuidrev-rfc4122bi...
-
What Happened to UUIDv2?
Interesting in more history of UUIDs? Twilio Segment's blog has an amazing history lesson about how they came to be.
-
Which UUID package do you use? and why?
I use the ksuid from segment. https://github.com/segmentio/ksuid
What are some alternatives?
spock - Multi-master Extension
ulid - Universally Unique Lexicographically Sortable Identifier (ULID) in Python 3
SearchCop - Search engine like fulltext query support for ActiveRecord
pg-ulid - ULID Functions for PostgreSQL
pg_party - ActiveRecord PostgreSQL Partitioning
nanoid - A tiny (124 bytes), secure, URL-friendly, unique string ID generator for JavaScript
flipper - 🐬 Beautiful, performant feature flags for Ruby.
ulid-mssql - Implementation of ULID generator For Microsoft SQL Server
jsonb_accessor - Adds typed jsonb backed fields to your ActiveRecord models.
python-ksuid - A pure-Python KSUID implementation
Scenic - Versioned database views for Rails
uuid7 - UUID version 7, which are time-sortable (following the Peabody RFC4122 draft)