I'm writing a distributed program that needs to manage exclusive access to some database rows. Clearly, numerous techniques exist for this case, but trying to KISS. Will this ever scale massively to users? dunno, but I want to plan for some future capacity.
I can't necessarily employ a classic PtP or PnS queue model because this processing will be scatter-gather and optionally synchronous. Layering atop the classic queue models would be possible, but I fear more complicated than necessary. Can you recommend one of the following and why to implement some lower-level control? I have a single DB and n processing nodes.
- Poll via
select for update
(or equivalent) for the DB records. There are some who are expressing concern with A) the database contention and B) that polling is still happening. - Network synchronized resource lock, persistent connection waiting for processing notifications (been debating an HTTP server push-style...maybe more complicated than layering atop MQ?),
- UDP message push (with TTL) by single dispatcher?
Any pros/cons or how you've implemented the same in past solutions and did you have the same concerns at the DB sync layer?