Το AWS SDK for Go χειρίζεται τη διαχείριση της μνήμης κατά τη διάρκεια μεταφορτώσεων μεγάλων αρχείων χρησιμοποιώντας έναν συνδυασμό τεχνικών:
1. Ροή: Το SDK χρησιμοποιεί ροή για τη μεταφόρτωση μεγάλων αρχείων, πράγμα που σημαίνει ότι χωρίζει το αρχείο σε μικρότερα κομμάτια και ανεβάζει κάθε κομμάτι ξεχωριστά. Αυτή η προσέγγιση βοηθά στη μείωση της χρήσης μνήμης φορτώνοντας μόνο ένα μικρό τμήμα του αρχείου στη μνήμη κάθε φορά[4].
2. Μεταφορτώσεις πολλών μερών: Το SDK υποστηρίζει επίσης μεταφορτώσεις πολλαπλών μερών, οι οποίες σας επιτρέπουν να ανεβάσετε μεγάλα αρχεία χωρίζοντάς τα σε μικρότερα μέρη και ανεβάζοντας κάθε τμήμα ξεχωριστά. Αυτή η προσέγγιση βοηθά στη διαχείριση της χρήσης της μνήμης φορτώνοντας μόνο ένα μικρό τμήμα του αρχείου στη μνήμη κάθε φορά[3].
3. Chunking: Το SDK χρησιμοποιεί το chunking για τη διαχείριση της χρήσης μνήμης κατά τη διάρκεια μεταφορτώσεων μεγάλων αρχείων. Χωρίζει το αρχείο σε μικρότερα κομμάτια και ανεβάζει κάθε κομμάτι ξεχωριστά. Αυτή η προσέγγιση βοηθά στη μείωση της χρήσης μνήμης φορτώνοντας μόνο ένα μικρό τμήμα του αρχείου στη μνήμη κάθε φορά[3].
4. Συγχρονισμός: Το SDK υποστηρίζει συγχρονισμό, πράγμα που σημαίνει ότι μπορεί να ανεβάσει πολλά κομμάτια του αρχείου ταυτόχρονα. Αυτή η προσέγγιση συμβάλλει στη βελτίωση της απόδοσης μεταφόρτωσης και στη μείωση της χρήσης μνήμης κατανέμοντας το φορτίο σε πολλές γορουτίνες[1].
5. Αποθήκευση προσωρινής αποθήκευσης: Το SDK χρησιμοποιεί προσωρινή αποθήκευση για τη διαχείριση της χρήσης μνήμης κατά τη μεταφόρτωση μεγάλων αρχείων. Αποθηκεύει τα δεδομένα του αρχείου στη μνήμη και στη συνέχεια τα ανεβάζει σε κομμάτια. Αυτή η προσέγγιση βοηθά στη μείωση της χρήσης μνήμης φορτώνοντας μόνο ένα μικρό τμήμα του αρχείου στη μνήμη κάθε φορά[1].
Χρησιμοποιώντας αυτές τις τεχνικές, το AWS SDK for Go μπορεί να χειριστεί αποτελεσματικά τις μεταφορτώσεις μεγάλων αρχείων ενώ διαχειρίζεται αποτελεσματικά τη χρήση της μνήμης.
Αναφορές:[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