Non creerei mai abbastanza entità per esaurire lo spazio degli indirizzi a 63 bit, ma dico che ho usato allocateIdRange per allocare l'id 9223372036854775807 (che è quasi 2^63). Questo tipo di entità è appena rotto per nuove entità automaticamente inserite?Cosa posso aspettarmi quando finisco gli ID su AppEngine?
Ho provato questo in un'app di prova. Sembra che alcuni frammenti di auto-IDer possano continuare a produrre id validi, ma altri frammenti danno solo un DatastoreFailureException
. Il tasso di successo è di circa il 30%. Salirà mai?
Questa è davvero una domanda seria perché, nella mia ingenuità, ho creato alcuni ID piuttosto grandi. Ho ancora diverse trilioni di entità da percorrere prima di arrivare a questo limite, ma ho notato che gli ID possono saltare di milioni tra entità, e io inserisco nuove entità al ritmo di circa un milione all'anno. Quindi ... ho paura di raggiungere questo limite.
È possibile utilizzare ID incrementale e non dovrebbe essere un problema –
Grazie per la risposta. Come posso usare l'ID incrementale? Nei miei test, l'allocazione predefinita che appengine smette di funzionare. –
Fintanto che non crei altri ID enormi, penso che starai bene. Credo che gli intervalli tra gli ID provengano da reimpostazioni nei contatori locali utilizzati per allocare gli ID. Puoi immaginare come funziona: vari frammenti del datastore utilizzano l'equivalente interno di allocate_ids per richiedere ad es. 100 id e poi consegnarli a nuove entità; se un frammento viene ucciso, qualsiasi ID non distribuito è sempre riservato. Io sto generando nuovi ID a un tasso di un milione all'anno penserei che la maggior parte dei frammenti debba distribuire molti id prima che muoiano. È possibile campionare gli ID per un mese e prevedere la velocità. –