Ho un sistema software che esegue l'OCR su più macchine contemporaneamente. Il sistema attuale funziona come segue:Linee guida di progettazione Calcolo distribuito
- Tutti i documenti che devono essere nascosti sono inseriti in una tabella in db.
- Ogni macchina client ocrorna quella tabella e ogni volta che vengono trovati dati per ocr, blocca la tabella e seleziona n. di file per ocr. Il blocco è usato per l'atomicità.
- Dopo ogni documento è ocra, lo stato del documento viene aggiornato come completo.
So che questo è un errore grave per impostare un database come luogo di sincronizzazione. Funziona bene ma a volte riesco a vedere il dead lock sul database ..
Quindi la mia domanda è: qual è il modo migliore per progettare un sistema di questo tipo, voglio database come dispositivo di archiviazione solo non un luogo di sincronizzazione. Voglio sentire i tuoi pensieri.
Grazie per la tua pronta risposta, ho effettivamente fatto qualcosa di simile che hai menzionato nel tuo primo paragrafo. Ma non sono soddisfatto da questa soluzione. – crypted
@ Int3: perché no? Non sto suggerendo di mantenere aperta la transazione durante l'elaborazione dei dati, ma solo contrassegnandola come in corso. –