AWS SDK for Go hoitaa muistinhallinnan suurten tiedostojen latauksen aikana käyttämällä useita tekniikoita:
1. Streaming: SDK käyttää suoratoistoa suurten tiedostojen lataamiseen, mikä tarkoittaa, että se jakaa tiedoston pienempiin osiin ja lataa jokaisen osan erikseen. Tämä lähestymistapa auttaa vähentämään muistin käyttöä lataamalla vain pienen osan tiedostosta muistiin kerrallaan[4].
2. Moniosaiset lataukset: SDK tukee myös moniosaisia latauksia, joiden avulla voit ladata suuria tiedostoja jakamalla ne pienempiin osiin ja lataamalla kukin osa erikseen. Tämä lähestymistapa auttaa hallitsemaan muistin käyttöä lataamalla vain pienen osan tiedostosta muistiin kerrallaan[3].
3. Pakkaus: SDK käyttää lohkomista hallitakseen muistin käyttöä suurten tiedostojen latauksen aikana. Se jakaa tiedoston pienempiin osiin ja lataa jokaisen osan erikseen. Tämä lähestymistapa auttaa vähentämään muistin käyttöä lataamalla vain pienen osan tiedostosta muistiin kerrallaan[3].
4. Samanaikaisuus: SDK tukee samanaikaisuutta, mikä tarkoittaa, että se voi ladata useita osia tiedostosta samanaikaisesti. Tämä lähestymistapa auttaa parantamaan lähetystehoa ja vähentämään muistin käyttöä jakamalla kuorman useiden gorutiinien kesken[1].
5. Puskurointi: SDK käyttää puskurointia muistin käytön hallitsemiseen suurten tiedostojen latauksen aikana. Se puskuroi tiedostotiedot muistiin ja lataa ne sitten paloina. Tämä lähestymistapa auttaa vähentämään muistin käyttöä lataamalla vain pienen osan tiedostosta muistiin kerrallaan[1].
Näitä tekniikoita käyttämällä AWS SDK for Go pystyy käsittelemään tehokkaasti suuria tiedostolatauksia ja hallitsemaan samalla muistin käyttöä tehokkaasti.
Lainaukset:[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