2015-01-25 18 views
7

DynamoDB local sta impiegando più di 100 ms per eseguire un'operazione single put sul mio tavolo. I documenti dicono che il throughput è ignorato per dbs locali, ed è limitato solo dalla velocità del disco rigido/computer.DynamoDB Local Terrible Performance

Rispetto a dire, mongodb, il mio throughput di scrittura è 100 volte più lento di quanto dovrebbe essere. C'è qualcosa che posso fare per accelerare questo?

Proverò il batch, ma il problema rimane. A questo punto, mi ci vorranno anni per inserire i miei (piuttosto grandi) dati di test.

Sto usando Clojure e Faraday come API del mio cliente, ma ho confermato che non è il collo di bottiglia.

Qualcun altro sta sperimentando terribili velocità di scrittura lente in DynamoDB locale?

EDIT:

allora ho lotti attuate a 25 per, che hanno rallentato il progresso totale di circa un fattore di 25 :). Quindi, anche con lotti, sto ottenendo una velocità di scrittura di circa 120 ms per articolo.

L'utilizzo di Mongo, anche con il contrassegno WriteConcern/ACKNOWLEDGED moderato, genera circa 250 microsecondi per elemento (circa 500 volte più veloce), senza che sia necessario inviare batch. Quindi non è il mio hard disk o sistema operativo che è il problema.

Qualsiasi approfondimento è molto apprezzato.

sk

+0

Quale versione di Dynamo DB Local stai usando? Vedi ancora questo tipo di performance nelle versioni più recenti? – mkobit

risposta

7

E 'stato un po' che lei ha chiesto la tua domanda, ma ho ancora voglia di dare alcune informazioni di base.

MongoDB è così veloce perché memorizza gli aggiornamenti in memoria prima di scriverli sul disco. Puoi leggere ulteriori informazioni al riguardo nelle FAQ ufficiali di MongoDB here

DynamoDBLocal d'altra parte è piuttosto lento perché utilizza un database SQLite dietro le quinte (puoi verificarlo aprendo il file * .db nella directory DynamoDBLocal con un browser SQLite) e SQLite ha una velocità di scrittura molto bassa rispetto ad altri database. Maggiori informazioni here.

DynamoDBLocal è solo uno strumento di base per lo sviluppo locale che racchiude un sottoinsieme dell'API DynamoDB attorno a un semplice database SQLite. Il vero DynamoDB, ovviamente, non si basa su SQLite ed è molto più veloce.

+5

Perché l'opzione -inMemory non lo rende più veloce allora? Non ha senso che questo "emulatore" sia così lento. – goofballLogic