I've read a recipe that used Postgres table inheritance to achieve sharding in a way it's mostly transparent to the client. The blog post read like a conversation between two people. Unfortunately I'm not finding the link anymore.
How do you decide to put as sharding-key? Something like 'user_id'. What if a user becomes too big? Something like id=uuid. Then you lose the semi-free user_id index.
I believe the holy-grail of sharding is range-based (bigtable, hbase, hypertable etc).
Comments
I've read a recipe that used Postgres table inheritance to achieve sharding in a way it's mostly transparent to the client. The blog post read like a conversation between two people. Unfortunately I'm not finding the link anymore.
EDIT:
Found it at https://raw.githubusercontent.com/fiksu/partitioned/master/P... in case anyone find interesting.
How do you decide to put as sharding-key? Something like 'user_id'. What if a user becomes too big? Something like id=uuid. Then you lose the semi-free user_id index.
I believe the holy-grail of sharding is range-based (bigtable, hbase, hypertable etc).
You mean like Oracle has supported since version 8 or so?
If it is automatic (meaning you don't have to manually define the ranges)+ ranges can split/join, then probably yes.
That's super neat, thanks for posting.