Czy ten Spring Batch jest dobrze napisany?

Odpowiedz Nowy wątek
2020-01-17 17:27

Rejestracja: 1 miesiąc temu

Ostatnio: 3 tygodnie temu

0

Hej,
Piszę własnego batcha w ramach nauki i chciałbym się zapytać czy ten przykład jest dobrze zrobiony?
https://vianneyfaivre.com/tec[...]atch-java-8-custom-itemreader

Chodzi mi o to, że użytkownik (autor) w metodzie reader() tworzy listę plików. Wzbudziło to moją nieufność, ponieważ prosi się to o OutOfMemoryError. Po prostu wczytuje wszystkie pliki z danego katalogu do listy, a następnie zwraca FileReader który implementuje ItemReader. Czy to nie prosi się o kłopoty? Jeżeli ten przykład jest źle zrobiony (może jest dobrze) poproszę o jakieś rozjaśnienie, jak to powinno wyglądać poprawnie. Dzięki

edytowany 1x, ostatnio: batchers23, 2020-01-17 17:28

Pozostało 580 znaków

2020-01-18 10:51

Rejestracja: 11 lat temu

Ostatnio: 3 godziny temu

1

File w Javie to taki „uchwyt” do pliku, którego zawartość nie jest wczytywania do pamięci ad hoc. Oczywiście gdyby tych plików w katalogu było zylion, wtedy lista może nie zmieścić się w pamięci, ale to jakis corner case. Gdzie widzisz problem?


„Pomysł wart jest tylko 1 zł + VAT”

Pozostało 580 znaków

2020-01-19 19:24

Rejestracja: 1 miesiąc temu

Ostatnio: 3 tygodnie temu

0
Charles_Ray napisał(a):

File w Javie to taki „uchwyt” do pliku, którego zawartość nie jest wczytywania do pamięci ad hoc. Oczywiście gdyby tych plików w katalogu było zylion, wtedy lista może nie zmieścić się w pamięci, ale to jakis corner case. Gdzie widzisz problem?

No właśnie, a to gubi przetwarzanie batchowe w tym sensie, że powinno to być (proszę o poprawę, jeżeli się mylę )niezależne od ilości plików. Czy parę milionów plików nie wywaliłoby batcha?

edytowany 5x, ostatnio: batchers23, 2020-01-19 19:26

Pozostało 580 znaków

2020-01-19 19:28
Moderator

Rejestracja: 16 lat temu

Ostatnio: 3 minuty temu

1

Bez przesady. Obiekt File nie jest ciężki. Musiałbyś serio mieć tych plików kolosalne ilości. Taki obiekt to jakieś bajty. Nawet jakby miał 1kB (a ma wielokrotnie mniej) to milion plików to raptem 1GB pamięci.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
raptem ( ͡° ͜ʖ ͡°) - danek 2020-01-19 19:43
Raptem, zobacz pod jakie heapy są projektowane algorytmy typu G1 czy Shanandoah - Charles_Ray 2020-01-19 20:04
@danek: mój kilkuletni laptop ma 32GB, każdy z kilkudziesięciu nodów na których odpalam swoje aplikacje w pracy ma > 256GB ramu. Tak, 1GB to jest "raptem". - Shalom 2020-01-19 20:29

Pozostało 580 znaków

2020-01-19 20:10

Rejestracja: 11 lat temu

Ostatnio: 3 godziny temu

1

Z dziennikarskiego obowiązku napiszę o jeszcze jednym ograniczeniu, o którym do tej pory nie było mowy - jest to systemowy limit file descriptorów per proces.

Natomiast w przypadku tego kodu jest luz, ponieważ FD jest tworzony dopiero przy tworzeniu java.io.FileDescriptor, a nie samego java.io.File.


„Pomysł wart jest tylko 1 zł + VAT”

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0