2011-12-13 9 views
5

Esiste un modo economico per importare dati di massa nel motore di app senza pagare per le operazioni di scrittura di datastore?Il modo più economico per importare oltre 10 m di entità sul motore di app

Stimo che caricare le mie entità 10m + costerebbe 100+ dollari per ottenere i miei dati nel motore di app c'è qualche altro modo? Sembra che (tenendo conto degli indici) ogni entità stia prendendo 10 operazioni di scrittura, in che modo posso ridurla a 1 operazione di scrittura?

Grazie

+0

Avrei pensato che non si traducesse in alcuna fatturazione poiché "l'utilizzo dell'API con il motore dell'app è gratuito", quindi non sapevo che questa operazione avrebbe comportato la fatturazione. +1 per avermelo fatto sapere A proposito di GAE hanno detto che non si paga per l'utilizzo dell'API, ovvero non penso che l'utilizzo di mapreduce risulti nella fatturazione, anche se fa molte letture/scritture. Potrei sbagliarmi qui dal momento che non ho una conoscenza completa dei prezzi dei motori di app. –

+0

Nick grazie per il tuo commento, non sto usando la mappa riduci per fare la mia importazione. La mia comprensione era che la riduzione delle mappe può solo scorrere sulle entità esistenti. Quello che sto facendo è che ho caricato tutti i dati da importare nella coda delle attività e un servlet sta elaborando le attività che scaricano i dati nell'attività nel database. Pur non essendo il modo più efficiente, è il più semplice per il mio caso. Da quello che ho letto il remote_api fondamentalmente fa la stessa cosa e non riesco a trovare informazioni sui prezzi su remote_api. Se qualcuno sa se remote_api o la mappa si riducono è più economico per favore fammi sapere! Grazie – mike

+0

Inoltre, questo può aiutare: non ho definito indici per la mia app, e nessuno compare quando clicco su indici di visualizzazione, ma finora ho 86.171 operazioni put e 1.333.374 operazioni di scrittura indice. Il problema è sicuramente indicizzato, ma non ne ho nessuno, quindi non sono sicuro di ciò che sta facendo. – mike

risposta

1

App Engine mantiene built-in indici per ogni proprietà indicizzata (vale a dire quelli che non hanno indicizzato = False come parametro quando si definisce la proprietà). Vedi http://code.google.com/appengine/articles/index_building.html per maggiori dettagli.

Se esistono proprietà che non verranno visualizzate in nessuna delle query, specificare indicizzato = Falso mentre si definisce la proprietà. Ciò consentirà di risparmiare il costo delle operazioni di scrittura dell'indice associate a tali proprietà che non è necessario indicizzare automaticamente.

+0

Ahhh ho avuto liste che non hanno bisogno di essere indicizzate, devono essere indicizzate implicitamente e sprecare un sacco di soldi. Grazie mille! – mike

+0

Inoltre, se si dispone di indici compositi, caricarli _after_ facendo il bulkload e non verrà addebitato alcun costo per tali indici. –

Problemi correlati