tl;dr: want table in database act priority queue (here min-queue on id), there free (for commercial use) dbms can solve problem? , how query like?
i want have many concurrent users select single row table, e.g. have table
+------+-------+--------+------------+ | id | col 1 | col 2 | processed | +------+-------+--------+------------+ | 1000 | data | data | false | +------+-------+--------+------------+ | 1001 | data | data | false | +------+-------+--------+------------+ | 1002 | data | data | false | +------+-------+--------+------------+ and if have 3 users, want atomic select , update, such first query returns col 1 , col 2 row lowest id , marks processed true, such the next query return row id = 1001.
the table expected small, i.e. @ 100,000 rows , queue expected emptied in 8 hours (around 3-4 queries per second, peak might around 50 queries in single second). used postgresql/mysql , have used mongodb briefly.
how should design system cope this? how query like? table lock noticable?
i think postgresql should candidate this.
some interesting pointers:
- (9.5 only) skip row locked
- row-level-locks
- select update
unless missing something, each thread select update (with skip row locked) picks first non-locked row , locks else, processes it, , flags / deletes once done.
Comments
Post a Comment