Wie kann ich Bulk-Upload bis s3?
-
21-08-2019 - |
Frage
Vor kurzem hat ich einige meinen Code zu stopfen Zeilen in eine db mit ‚Belastungsdaten‘ Refactoring und es funktioniert super - aber für jeden Datensatz I Ich habe 2 Dateien auf s3 laden muß - dies zerstört völlig die großartige Geschwindigkeit Upgrade, ich war zu erhalten. Während ich in der Lage war 600+ dieser Dokumente zu verarbeiten / Sekunde nun an sie tröpfeln 1 / Sekunde wegen s3.
Was sind Ihre Abhilfen für das? Mit Blick auf die API Ich sehe, dass es meistens RESTful ist so bin ich nicht sicher, was zu tun - vielleicht sollte ich nur Stick dies alles in die Datenbank. Die Textdateien sind in der Regel nicht mehr als 1,5k. (Die andere Datei, die wir dort stopfen ist eine XML-Darstellung des Textes)
I-Cache bereits diese Dateien in HTTP-Anfragen auf meinen Web-Server, da sie sehr viel verwendet werden.
btw: unsere aktuelle Implementierung verwendet Java; Ich habe noch nicht Threads versucht, aber das könnte eine Option sein
Empfehlungen?
Lösung
Sie können die [putObjects
] [1] Funktion von Jets3t , um mehrere Dateien auf einmal zu .
Alternativ können Sie einen Hintergrund-Thread verwenden, um S3 aus einer Warteschlange zu laden, und fügen Sie Dateien in der Warteschlange aus dem Code, der die Daten in die Datenbank geladen wird.
[1]: http://jets3t.s3.amazonaws.com/api/org/jets3t/service/multithread/S3ServiceMulti.html#putObjects (org.jets3t.service.model.S3Bucket , org. jets3t.service.model.S3Object [])
Andere Tipps
Ich habe gerade eine nette Lösung ein ganzes Verzeichnis mit PHP laden:
$client->uploadDirectory(
SOURCE_FOLDER,
YOUR_BUCKET_NAME,
DESTINATION,
array(
'concurrency' => 5,
'debug' => TRUE,
'force' => FALSE,
'params' => array(
'ServerSideEncryption' => 'AES256',
),
)
);