2009-03-20 16 views
5

Niedawno refaktoryzowałem część mojego kodu, aby spakować wiersze do bazy danych za pomocą "danych ładowania" i działa świetnie - jednak dla każdego rekordu muszę załadować 2 pliki do s3 - to całkowicie niszczy wspaniałą poprawę szybkości, którą był uzyskanie. Podczas gdy byłem w stanie przetworzyć ponad 600 takich dokumentów/sekundę, teraz są one spuszczane z prędkością 1/2 z powodu s3.Jak mogę przesłać zbiorczo do s3?

Jakie są twoje rozwiązania tego problemu? Patrząc na API widzę, że jest on w większości RESTful, więc nie jestem pewien co robić - może powinienem po prostu włożyć to wszystko do bazy danych. Pliki tekstowe zwykle nie przekraczają 1,5 tys. (drugim plikiem, który tam pakujemy jest reprezentacja xml tekstu)

Już buforuje te pliki w żądaniach HTTP na mój serwer WWW, ponieważ są one często używane.

btw: nasza obecna implementacja używa java; Nie próbowałem jeszcze wątków, ale może to być opcja Zalecenia?

Odpowiedz

6

Możesz użyć funkcji [putObjects] [1] z JetS3t, aby przesłać wiele plików jednocześnie.

Alternatywnie można użyć wątku tła do przesłania do S3 z kolejki i dodać pliki do kolejki z kodu, który ładuje dane do bazy danych.

[1]: http://jets3t.s3.amazonaws.com/api/org/jets3t/service/multithread/S3ServiceMulti.html#putObjects(org.jets3t.service.model.S3Bucket, org.jets3t.service.model.S3Object [])

+0

thnx dużo - Powinienem był czesany przez to api pierwszy zamiast myśleć API S3 byłby końcowemu wszyscy-wszyscy; to jest dokładnie to, czego potrzebowałem – eyberg

Powiązane problemy