2014-11-25 4 views

risposta

3

Per impostazione predefinita, si ottiene l'ordine delle chiavi e l'ordine delle chiavi dipende dal fatto che si sia scelto l'ID predefinito o fornito un nome chiave e, se il primo, sia stato utilizzato il criterio predefinito per l'allocazione delle chiavi. The doc dice "la politica di default genera una sequenza casuale di ID che è distribuita approssimativamente uniformemente: ogni ID può avere una lunghezza massima di 16 cifre decimali".

La parte "16 cifre" è interessante. Fondamentalmente, le chiavi sono 53 bit, la parte frazione di un doppio IEEE. JavaScript usa IEEE in doppio, quindi 53 bit è il più grande valore intero che puoi tranquillamente effettuare il round-trip tramite JSON.

+1

Quindi l'ordinamento predefinito 'Person.all()' è equivalente a 'Person.all(). Order ('__ chiave __')' in Python dove 'Person 'è un'entità? – Dan

+0

Questa è la mia comprensione. –

1

dipende da quale parametro si filtra. Fondamentalmente l'ordinamento è sempre ASC, a seconda di come viene filtrato. Dai un'occhiata a this document potrebbe essere d'aiuto. Fondamentalmente, qualunque filtro tu usi determinerà l'ordinamento. Un altro documento interessante sarebbe this one che spiega gli indici in maggiori dettagli.

Nel caso in cui non si utilizzi un filtro, credo che l'indice utilizzato sia l'indice basato sulle chiavi, quindi si avrà una chiave crescente come ordine.

+0

Cosa succede se non si utilizza un filtro? – Dan

+0

Modificato la risposta per aggiungerlo, anche se altre persone hanno già risposto :) – Patrice

+0

Grazie. Dalle altre risposte sembra che l'ordinamento predefinito sia sempre crescente, non discendente. – Dan

2

Datastore write costs afferma che l'entità del datastore include l'indice EntityByKinds integrato. This index include la chiave di entità.

Ogni volta che viene aggiunta una nuova entità di qualsiasi tipo, una nuova riga viene automaticamente aggiunta a questa tabella con la chiave della nuova entità in modo che possa essere interrogata in seguito.

Quindi suppongo che se nessun ordine fornito, datastore restituisce entità ordinate per chiave.

La chiave dell'entità viene archiviata in modo che l'entità stessa possa essere recuperata in modo efficiente se viene restituita come risultato per la query eseguita.

Impossibile trovare il documento su asc/desc, ma quando ho effettuato una query di seguito, l'ordine predefinito era asc.

>SELECT * FROM Model order by __key__ asc 
>SELECT * FROM Model 
success and same result 
>SELECT * FROM Model order by __key__ desc 
no matching index found 

Quindi la conclusione della mia ricerca è che l'ordine di default è

order by __key__ asc 

Si prega di correggermi se mi manca qualcosa.

Problemi correlati