Ho un'applicazione proof of concept che usa le tabelle di Azure per associare le sequenze di DNA a "qualcosa".
La tabella 1 è la tabella principale. Elenca in modo univoco ogni sequenza di DNA. Il PK è un hash bilanciato del carico del RK. L'RK è l'unico valore codificato della sequenza del DNA.
Sono create tabelle aggiuntive per argomento. Il PK è un hash bilanciato dal carico e l'RK è il valore unico della sequenza del DNA. Supponiamo che la quantità di RK qui sia di molti ordini di grandezza inferiore alla tabella Master. Ogni soggetto ha una lista di sequenze di DNA N che hanno un riferimento nella tabella Master, dove N è > 100.000.
È possibile che molte tabelle facciano riferimento alla stessa sequenza di DNA, ma in questo caso sarà presente una sola voce nella tabella Master.
Il mio dilemma di Azure:
Ho bisogno di bloccare il riferimento nella tabella Master mentre lavoro con i dati. Devo gestire i timeout e impedire ad altri thread di sovrascrivere i miei dati mentre un thread C # sta lavorando con le informazioni. Altri thread devono rendersi conto che questo è bloccato e passare ad altri record sbloccati e fare il lavoro.
Idealmente mi piacerebbe avere un rapporto sui progressi di come sta andando il mio calcolo, e ho la possibilità di annullare il processo (e di svolgere i blocchi).
Domanda
Qual è l'approccio migliore per questo?
Sto osservando questi frammenti di codice come fonte di ispirazione: