Sto utilizzando RemoteAPI (Java) per passare attraverso un set di dati di grandi dimensioni, ~ 90 K entità ed eseguire alcuni migrazione dei dati.Interrogazione datastore con limite
int CHUNK_SIZE = 500;
int LIMIT = 900;
QueryResultList<Entity> result = ds.prepare(entityQuery)
.asQueryResultList(
FetchOptions.Builder
.withPrefetchSize(CHUNK_SIZE)
.limit(LIMIT)
.chunkSize(CHUNK_SIZE)
).startCursor(cursor);
Con la query LIMIT
insieme al 900
il result.size()
è l'intero set di dati, ~ 90K, invece di 900
. Se provo a diminuire LIMIT
, ad esempio 300
, la dimensione del risultato è quella prevista (300
).
Cosa mi manca qui? Dalla documentazione non sono riuscito a capire perché produce il comportamento che sto descrivendo qui.
Sto forse dicendo qualcosa di stupido ma hai provato a cambiare l'ordine delle tue opzioni? FetchOptions.Builder.withLimit (LIMIT) .withPrefetchSize (CHUNK_SIZE) .chunkSize (CHUNK_SIZE) ) .startCursor (cursore); – yannicksoldati
Correggetemi se ho torto ma non vedo il metodo '.limit' nel Riepilogo dei metodi per l'oggetto' FetchOptions.Builder' (vedi: https://cloud.google.com/appengine/docs /java/javadoc/com/google/appengine/api/datastore/FetchOptions.Builder). Dovrebbe essere '.withLimit' invece. –