AWS SDK for Go tvarko atmintį įkeliant didelius failus naudodamas kelių metodų derinį:
1. Srautas: SDK naudoja srautinį perdavimą dideliems failams įkelti, o tai reiškia, kad failas suskaidomas į mažesnius gabalus ir įkeliamas atskirai. Šis metodas padeda sumažinti atminties naudojimą, nes vienu metu į atmintį įkeliama tik nedidelė failo dalis[4].
2. Kelių dalių įkėlimas: SDK taip pat palaiko kelių dalių įkėlimą, leidžiantį įkelti didelius failus padalijus juos į mažesnes dalis ir įkeliant kiekvieną dalį atskirai. Šis metodas padeda valdyti atminties naudojimą, kai vienu metu į atmintį įkeliama tik nedidelė failo dalis[3].
3. Padalijimas: SDK naudoja skaidymą, kad valdytų atminties naudojimą įkeliant didelius failus. Ji padalija failą į mažesnius gabalus ir įkelia kiekvieną dalį atskirai. Šis metodas padeda sumažinti atminties naudojimą, nes vienu metu į atmintį įkeliama tik nedidelė failo dalis[3].
4. Lygiagretumas: SDK palaiko lygiagretumą, o tai reiškia, kad jis vienu metu gali įkelti kelias failo dalis. Šis metodas padeda pagerinti įkėlimo našumą ir sumažinti atminties naudojimą paskirstant apkrovą kelioms gorutinoms[1].
5. Buferis: SDK naudoja buferį, kad tvarkytų atminties naudojimą įkeliant didelius failus. Jis saugo failo duomenis atmintyje ir įkelia juos dalimis. Šis metodas padeda sumažinti atminties naudojimą, nes vienu metu į atmintį įkeliama tik nedidelė failo dalis[1].
Naudodamas šiuos metodus, AWS SDK for Go gali efektyviai tvarkyti didelių failų įkėlimą ir efektyviai valdyti atminties naudojimą.
Citatos:[1] https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-operations.html
[2] https://www.youtube.com/watch?v=R6W1ay4jYKk
[3] https://github.com/aws/aws-sdk-go/issues/1104
[4] https://stackoverflow.com/questions/34177137/stream-file-upload-to-aws-s3-using-go
[5] https://www.youtube.com/watch?v=HkF3_GLVKEg