R
Rob Conery
rob.conery.io · Personal blog · on HN since 2015
Rob Conery writes about PostgreSQL, Node.js, and .NET development, and is the author of The Imposter's Handbook.
What HN saysHN commenters list him among developer blogs, link his Postgres id generator, and note his correction to a RethinkDB performance claim.
50HN people shared it
10linked it in comments
57stories submitted
1.7Kstory points
5 years agolast shared
2015people per year2026
Most-shared posts
- 1Mod and remainder are not the same3 people · 168 points · first shared 2018 · 48 comments on HN
- 2Bring the power of Postgresql to Nodejs3 people · 11 points · first shared 2015 · discussion on HN
- 3A Pure PostgreSQL Document Database API3 people · 11 points · first shared 2018 · discussion on HN
- 4The Imposter's Handbook3 people · 8 points · first shared 2016 · 1 comments on HN
- 5How To Learn a New Programming Language While Maintaining Your Day Job3 people · 7 points · first shared 2015 · discussion on HN
- 6A better id generator for postgresql3 people · first shared 2015
- 7RethinkDB 2.0 is amazing2 people · 348 points · first shared 2015 · 203 comments on HN
- 8Fine tuning full text search with PostgreSQL 122 people · 45 points · first shared 2019 · 2 comments on HN
- 9PostgreSQL Tools for the Visually Inclined2 people · 8 points · first shared 2019 · discussion on HN
- 10Learn Elixir the Fun Way2 people · 6 points · first shared 2016 · discussion on HN
- 11Should I Trust Firebase? Of Course Not2 people · 4 points · first shared 2017 · discussion on HN
- 12Designing a PostgreSQL Document API2 people · 4 points · first shared 2015 · discussion on HN
- 13A better id generator for postgresql2 people · first shared 2017
- 14Embracing SQL in Postgres1 people · 273 points · first shared 2015 · 120 comments on HN
- 15WTF Is Big O Notation?1 people · 143 points · first shared 2019 · 96 comments on HN
What HN people wrote when they linked it
fa17 · 2017-01-30
Scott Hanselman(dotnet and random h/w hacks) -http://www.hanselman.com/
Rob Connery(dotnet,elixir,postgres) - http://rob.conery.io/
timmaxw · 2015-04-18
Note that the 9ms performance claim in this article is mistaken. The author has issued a correction: http://rob.conery.io/2015/04/17/rethinkdb-2-0-is-amazing/
pcmaffey · 2019-12-15
For something a little more practical, I recently came across this postgres id generator[1], which Ive been playing around with as a solution for ordered, scalable bigint ids (that take up less space than standard uuids).
[1] https://rob.conery.io/2014/05/28/a-better-id-generator-for-postgresql/
Dowwie · 2017-10-27
Why not use Twitter's snowflake id? Instagram blogged about a Postgres function that generates them
http://rob.conery.io/2014/05/28/a-better-id-generator-for-postgresql/
macca321 · 2017-06-29
This book http://rob.conery.io/2016/07/03/imposters-handbook/ is written specifically with you in mind.
barkingdog · 2016-06-08
Hmm, going to say a hard no on naively preferring UUIDs. It's a little bit of extra work to go with the instagram style approach [0] of using many logical postgres shards with a custom id function that implements twitter snowflake style IDs, but it's an elegant, scalable and operationally simple solution. I am very fond of it.
[0] http://rob.conery.io/2014/05/29/a-better-id-generator-for-postgresql/
sotojuan · 2015-11-11
Well, the easy answer is to stop volunteering and attending family/social events[1]. Check out this[2] blog post for other possible ideas.
[1] Number 3 here: http://www.aaronsw.com/weblog/morebooks
[2] http://rob.conery.io/2015/10/06/how-to-learn-a-new-programming-languag…
intellectable · 2015-10-18
bjt · 2017-06-09
> In what context would a primary key change, even when sharding?
The only time I've seen that happen is when a DBA evangelized for just using 'natural' keys, which in this case were slugs based on the item name. The problem came when users decided they wanted to rename things and then wondered why the IDs they were seeing in URLs didn't match the new names.
I'm not a believer in natural keys anymore.
> If you need sorting in your table, provide some kind of indexed timestamp.
A v4 UUID contains a timestamp. So it seems a bit wasteful to add the separate timestamp column. Why not just use the timestamp built into the ID? This is what MongoDB's internally-generated IDs do. (Though they're not quite UUIDs.)
There's a catch with v4 UUIDs though: the timestamp portion of the ID is not the most significant digits, so a simple ORDER BY doesn't do what you want.
I like the solution developed by Instagram, which Rob Conery discusses at the link below. It uses a pretty simple plpgsql function to generate a 64 bit integer based on the current time, a shard ID, and a per-shard sequence. This lets you generate 1024 IDs per second per shard. It also puts the timestamp portion of the ID first, so if all the shards' data ends up in Hadoop or something you can order consistently across the whole set.
http://rob.conery.io/2014/05/29/a-better-id-generator-for-postgresql/
PUSH_AX · 2016-08-24