AWS SDK for Go håndterer hukommelseshåndtering under upload af store filer ved at bruge en kombination af teknikker:
1. Streaming: SDK'et bruger streaming til at uploade store filer, hvilket betyder, at den deler filen op i mindre bidder og uploader hver chunk separat. Denne tilgang hjælper med at reducere hukommelsesforbruget ved kun at indlæse en lille del af filen i hukommelsen ad gangen[4].
2. Multipart-uploads: SDK'et understøtter også multipart-uploads, som giver dig mulighed for at uploade store filer ved at opdele dem i mindre dele og uploade hver del separat. Denne tilgang hjælper med at styre hukommelsesbrug ved kun at indlæse en lille del af filen i hukommelsen ad gangen[3].
3. Chunking: SDK'en bruger chunking til at administrere hukommelsesforbrug under upload af store filer. Det opdeler filen i mindre bidder og uploader hver chunk separat. Denne tilgang hjælper med at reducere hukommelsesforbruget ved kun at indlæse en lille del af filen i hukommelsen ad gangen[3].
4. Concurrency: SDK'et understøtter samtidighed, hvilket betyder, at det kan uploade flere bidder af filen samtidigt. Denne tilgang hjælper med at forbedre uploadydeevnen og reducere hukommelsesforbruget ved at sprede belastningen på tværs af flere goroutiner[1].
5. Buffering: SDK'et bruger buffering til at administrere hukommelsesforbrug under upload af store filer. Den gemmer fildataene i hukommelsen og uploader dem derefter i bidder. Denne tilgang hjælper med at reducere hukommelsesforbruget ved kun at indlæse en lille del af filen i hukommelsen ad gangen[1].
Ved at bruge disse teknikker kan AWS SDK for Go effektivt håndtere store filuploads og samtidig administrere hukommelsesforbruget effektivt.
Citater:[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