PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Impostazione del timestamp all'interno della transazione

Questo sorta di domanda si presenta di tanto in tanto:per quanto ne so, l'unico modo completamente affidabile è fare ciò che hai descritto, memorizzare gli ID aggiornati in una tabella nel primo processo e contrassegnarli come elaborati nel secondo. Fondamentalmente si tratta di reinventare una coda di messaggi nel database. Hai descritto abbastanza bene come una soluzione ingenua mancherà gli aggiornamenti.

Avere il processo di importazione contrassegnare le righe aggiornate può essere fatto abbastanza facilmente o addirittura implementato utilizzando i trigger nella tabella dei dati. Se disponi di un solo processo consumer, tutto ciò che deve fare è delete from updated_item returning item_id per ottenere un elenco di aggiornamenti. Sembra che sia molto più complicato, ma IMHO non lo è, davvero. Funzionalità come la possibilità di monitorare gratuitamente quanto è grande il backlog emergono anche.