In particolare, sto utilizzando Elasticsearch per eseguire l'impaginazione, ma questa domanda potrebbe essere applicata a qualsiasi database.Come gestire l'impaginazione quando i dati di origine cambiano di frequente
Elasticsearch fornisce metodi a paginate search results con i pratici parametri from
e to
.
Così ho esegue una query get me the most recent data from result 1 to 10
Questa grande opera.
L'utente clicca su "pagina successiva" e la query è: get me the most recent data from result 11 to 20
Il problema è che nel tempo tra i due interrogazioni, sono stati aggiunti 2 nuovi record al database di supporto, il che significa che i risultati impaginati si sovrapporrà (gli ultimi 2 della prima pagina appariranno come primi due nella seconda pagina).
Qual è la soluzione migliore per evitare questo? In questo momento sto aggiungendo un filtro alla query che dice di includere solo i risultati più tardi rispetto all'ultimo risultato della query precedente. Ma sembra semplicemente hackish.
Grazie per la spiegazione dettagliata. Per qualche ragione, pensavo che scan/scroll fosse la stessa cosa, ma ovviamente non è vero! Scroll sembra una buona scelta quando non hai qualcosa come l'ultimo timestamp da filtrare. – bradvido
Lo svantaggio per il filtro data/ora è che se qualcuno dovesse cancellare un documento, si potrebbe potenzialmente saltare un documento dalla pagina successiva dei risultati? – writofmandamus
Nota dai documenti API Scroll 'Lo scorrimento non è inteso per richieste utente in tempo reale,' – Ben