De AWS SDK voor Go verzorgt het geheugenbeheer tijdens het uploaden van grote bestanden door een combinatie van technieken te gebruiken:
1. Streaming: de SDK gebruikt streaming om grote bestanden te uploaden, wat betekent dat het bestand in kleinere delen wordt opgedeeld en elk deel afzonderlijk wordt geüpload. Deze aanpak helpt het geheugengebruik te verminderen door slechts een klein deel van het bestand tegelijk in het geheugen te laden[4].
2. Uploads uit meerdere delen: De SDK ondersteunt ook uploads uit meerdere delen, waarmee u grote bestanden kunt uploaden door ze in kleinere delen te verdelen en elk deel afzonderlijk te uploaden. Deze aanpak helpt het geheugengebruik te beheren door slechts een klein deel van het bestand tegelijk in het geheugen te laden[3].
3. Chunking: De SDK gebruikt chunking om het geheugengebruik te beheren tijdens het uploaden van grote bestanden. Het verdeelt het bestand in kleinere delen en uploadt elk deel afzonderlijk. Deze aanpak helpt het geheugengebruik te verminderen door slechts een klein deel van het bestand tegelijk in het geheugen te laden[3].
4. Gelijktijdigheid: de SDK ondersteunt gelijktijdigheid, wat betekent dat meerdere delen van het bestand tegelijkertijd kunnen worden geüpload. Deze aanpak helpt de uploadprestaties te verbeteren en het geheugengebruik te verminderen door de belasting over meerdere goroutines te spreiden[1].
5. Buffering: De SDK gebruikt buffering om het geheugengebruik te beheren tijdens het uploaden van grote bestanden. Het buffert de bestandsgegevens in het geheugen en uploadt deze vervolgens in stukjes. Deze aanpak helpt het geheugengebruik te verminderen door slechts een klein deel van het bestand tegelijk in het geheugen te laden[1].
Door deze technieken te gebruiken, kan de AWS SDK voor Go op efficiënte wijze grote bestandsuploads verwerken en tegelijkertijd het geheugengebruik effectief beheren.
Citaties:[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