Design pattern per il recupero dei dati in blocchi

4

Sto creando un'applicazione Qt che utilizza un database con un'enorme quantità di dati per disegnare alcuni grafici. Il recupero dei dati dal database richiede molto tempo, quindi il blocco del thread dell'applicazione o del thread di lavoro crea un ritardo spiacevole.

Ho un'idea che invece di fare tutto contemporaneamente posso recuperare dati e disegnare grafici in blocchi. Come potrei progettare questa funzionalità?

Non ho idea di come posso progettare le mie interfacce. Voglio anche che ci sia un posto per altri elementi del database, come il caching, in modo pulito.

    
posta Mateusz Drost 07.11.2015 - 23:10
fonte

2 risposte

2

Dai un'occhiata al pattern Batch Iterator (o Chunky Iterator) da POSA5 (capitolo 6.3). C'è anche un libro se vuoi maggiori dettagli.

Supponendo di aver compreso il pattern Iterator, l'iteratore batch esegue lo chunking in base alle dimensioni della struttura dati che utilizza (il client dell'iteratore non è a conoscenza di come si verifica il chunking).

    
risposta data 09.11.2015 - 04:25
fonte
0

Sembra che tu abbia bisogno di un pool di thread di lavoratori a cui puoi passare i criteri di selezione (per la chiamata al database) e un riferimento all'area del grafico. Quindi è possibile fare in modo che ogni lavoratore esegua una query sul database per un sottoinsieme di dati e lo faccia trame della parte del grafico. Potrebbe essere necessario mediare l'accesso all'area del grafico (non ho idea di come sia strutturato QT), ma mentre i lavoratori sono occupati il thread principale può continuare a servire le richieste degli utenti.

    
risposta data 09.11.2015 - 18:33
fonte