sql - Is it possible to use a PG sequence on a per record label? -
does postgresql 9.2+ provide functionality make possible generate sequence namespaced particular value? example:
.. | user_id | seq_id | body | ... ---------------------------------- - | 4 | 1 | "abc...." - | 4 | 2 | "def...." - | 5 | 1 | "ghi...." - | 5 | 2 | "xyz...." - | 5 | 3 | "123...." this useful generate custom urls user:
domain.me/username_4/posts/1 domain.me/username_4/posts/2 domain.me/username_5/posts/1 domain.me/username_5/posts/2 domain.me/username_5/posts/3 i did not find in pg docs (regarding sequence , sequence functions) this. sub-queries in insert statement or custom pg functions other options?
maybe answer little off-piste, consider partitioning data , giving each user own partitioned table posts.
there's bit of overhead setup need triggers managing ddl statements partitions, result in each user having own table of posts, along own sequence benefit of being able treat posts 1 big table also.
general gist of concept...
psql# create table posts (user_id integer, seq_id integer); create table psql# create table posts_001 (seq_id serial) inherits (posts); create table psql# create table posts_002 (seq_id serial) inherits (posts); create table psql# insert posts_001 values (1); insert 0 1 psql# insert posts_001 values (1); insert 0 1 psql# insert posts_002 values (2); insert 0 1 psql# insert posts_002 values (2); insert 0 1 psql# select * posts; user_id | seq_id ---------+-------- 1 | 1 1 | 2 2 | 1 2 | 2 (4 rows) i left out rather important check constraints in above setup, make sure read docs how these kinds of setups used
Comments
Post a Comment