2012-03-30 14 views
2

Ich habe gerade Dynamodb Beispiel aus Amazon versucht.Amazon DynamoDB Client ist so langsam

Ich verstehe die Vorteile auf der db selbst, aber ich fand es HTTP-Verbindung verwendet, um Daten zu schreiben und zu lesen. Wenn ich 1000 Schreib/Sek. Habe, bedeutet das, dass ich 1000 Verbindungen zum Schreiben haben muss? Wenn ja, ist es nicht zu schwer für einen Client-Server?

Gibt es eine Möglichkeit, eine Verbindung über TCP als normale db herzustellen? Vielen Dank.

Antwort

0

Sie öffnen keine Verbindung pro Sagen für jede Abfrage, Sie stellen eine Anfrage. Da Sie sich in einem sehr schnellen Netzwerk innerhalb von Amazon befinden, ist die Latenz selbst bei http sehr gering. Sicher TCP ist "schneller", aber das ist nur, wenn Sie die Geschwindigkeit der Verbindung in einer nicht realen Welt vergleichen. Der eigentliche Vorteil von HTTP ist, dass Sie es sehr einfach skalieren können. Was sie getan haben, ist ein paar ms Latenz bei jeder Anfrage hinzugefügt und im Gegenzug haben sie garantiert, dass die Anfrage weniger als 10ms sein wird. In ihrer Dokumentation geben sie an, dass die von ihnen garantierte Antwortzeit eine einstellige Millisekunde ist.

So ist HTTP im Vergleich zu TCP langsam, wenn Sie nur das Protokoll vergleichen. Aber wenn Sie sich das Produkt tatsächlich ansehen, werden Sie sehen, dass seine Geschwindigkeit weit davon entfernt ist, langsam zu werden. Es ist wahrscheinlich eine der schnellsten Datenbanken, die Sie entwerfen können, wenn Sie große Datensätze in den Sinn bringen.

+0

Bedeutung AWS SDK wird einen Verbindungspool selbst verwalten? Also sollte ich ein statisches Client-Objekt erstellen oder besser ein neues für jede Anfrage initiieren? – PeiSong

+0

Es gibt keinen echten Verbindungspool für http. Http hat, was Sie persistente Verbindungen nennen und am Leben erhalten http://en.wikipedia.org/wiki/HTTP_persistent_connection. Um jedoch die maximale Leistung Ihrer Anwendung zu erzielen, müssen Sie immer mehrere Verbindungen gleichzeitig geöffnet haben. Sie könnten für jeden Thread eine SimpleDB-Instanz erstellen. – bwight

1

Wenn der Durchsatz 1000 Schreibt/Sek. Beträgt, werden Ihre Daten so verteilt, dass Sie in Sekundenschnelle 1000 erfolgreiche Schreibvorgänge für Ihre Daten gewährleisten können. Dynamodb ist sehr schnell und zuverlässig in einer skalierbaren Umgebung.

0

Wenn Sie 1000 Schreibvorgänge pro Sekunde wünschen, müssen Sie den Schreibdurchsatz für die Tabelle als 1000 konfigurieren, unter der Annahme, dass jede Datenelementgröße 1 KB beträgt. Wenn sie kleiner oder größer als 1 KB ist, verwenden Sie die Rundenzahl nach dem Dividieren mit 1 KB Beispiel 1.6kb/1kb = 1.6 ~ 2 dh Schreibdurchsatz muss 2000 für 1000 Schreibvorgänge pro Sekunde sein. Selbst nach HTTP-Verbindung fand ich es sehr schnell, wenn man bedenkt, dass unser Einfügungsdienst auch in der gleichen EC2-Zone läuft.