2015-01-25 5 views
7

DynamoDB lokal dauert 100 + ms, um eine einzelne Put-Operation gegen meine Tabelle durchzuführen. Die Dokumentation sagt, dass der Durchsatz für lokale dbs ignoriert wird und nur durch die Geschwindigkeit der Festplatte/des Computers begrenzt ist.DynamoDB Lokale schreckliche Leistung

Im Vergleich zu sagen, mongodb, mein Schreibdurchsatz ist 100x langsamer als es sein sollte. Kann ich etwas beschleunigen?

Ich werde Batch-Puts versuchen, aber das Problem bleibt immer noch. An diesem Punkt werde ich Jahre brauchen, um meine (ziemlich großen) Testdaten einzugeben.

Ich benutze Clojure und Faraday als meine Client-API, aber haben bestätigt, dass das nicht der Flaschenhals ist.

Hat jemand andere schreckliche langsame Schreibgeschwindigkeiten in DynamoDB lokal?

EDIT:

ich seit umgesetzt Chargen haben bei 25 pro, die die Gesamt Fortschritte etwa um einen Faktor von 25 :) verlangsamt. Also, selbst mit Stapeln, bekomme ich eine Schreibgeschwindigkeit von etwa 120 ms pro Stück.

Die Verwendung von Mongo, sogar mit konservativem WriteConcern/ACKNOWLEDGED-Flag, führt zu etwa 250 Mikrosekunden pro Element (~ 500x schneller), und das, ohne dass sogar Stapel gesendet werden müssen. Es ist also nicht meine Festplatte oder mein Betriebssystem.

Alle Einblicke werden sehr geschätzt.

sk

+0

Welche Version von Dynamo DB Local verwenden Sie? Sehen Sie diese Art von Leistung in neueren Versionen noch? – mkobit

Antwort

7

Es ist eine Weile her, seit Sie Ihre Frage gestellt, aber ich möchte noch einige Hintergrundinformationen geben.

MongoDB ist so schnell, weil es die Updates im Speicher zwischenspeichert, bevor sie auf die Festplatte geschrieben werden. Sie können mehr darüber in der offiziellen MongoDB FAQ here

lesen DynamoDBLocal auf der anderen Seite ist ziemlich langsam, weil es eine SQLite-Datenbank hinter den Kulissen verwendet (Sie können dies überprüfen, indem Sie die * .db-Datei im DynamoDBLocal-Verzeichnis mit öffnen ein SQLite Browser) und SQLite hat im Vergleich zu anderen Datenbanken sehr geringe Schreibgeschwindigkeiten. Weitere Informationen here.

DynamoDBLocal ist nur ein grundlegendes Tool für die lokale Entwicklung, bei dem eine Teilmenge der DynamoDB-API um eine einfache SQLite-Datenbank gewickelt wird. Die echte DynamoDB verlässt sich natürlich nicht auf SQLite und ist viel schneller.

+5

Warum macht die Option -inMemory es nicht schneller? Es macht keinen Sinn, dass dieser "Emulator" so langsam ist. – goofballLogic