Il datastore del motore di app non può essere interrogato per un risultato aggregato.Strategia alternativa per interrogare l'aggregazione ("raggruppa per") nel datastore del motore dell'app google
Esempio: Ho un'entità chiamata "Post" con i seguenti campi:
Key ID, String soprannome, String postText, int punteggio
Ho molti soprannomi diversi e molti messaggi di ogni soprannome nel mio archivio dati.
Se voglio una classifica dei primi dieci soprannomi di punteggio totale, vorrei in genere hanno sql come segue:
select nickname, sum(score) as sumscore
from Post
group by nickname
order by sumscore
limit 10
Questo tipo di query non è possibile in Google App Engine datastore java api (JDO o jpa).
Quali sono le strategie alternative che potrei utilizzare per ottenere un risultato simile?
Crudamente e intensamente, ho potuto caricare ogni entità Post e calcolare l'aggregazione completamente nel mio codice applicazione. Questo ovviamente non è efficiente su dataset di grandi dimensioni.
Quali altre strategie posso utilizzare?
Se Google aggiornasse solo il proprio plug-in, DataNucleus avrebbe fatto questo approccio "forza bruta e brutale" per te in modo trasparente. Il codice per farlo sarebbe solo una manciata di linee per il loro plugin, contribuito un anno fa ... – DataNucleus
@DataNucleus Avere supporto integrato non lo renderebbe più veloce o più efficiente. –
@Nick, certo che non lo sarebbe, ma l'intera esperienza utente sarebbe dannatamente più piacevole, e la quantità di codice che la gente dovrà scrivere sarebbe inferiore - questo è il business in cui ci troviamo – DataNucleus