Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Môžem použiť iba doprednú čítačku na nahrávanie veľkých súborov do S3 v Golang


Môžem použiť iba doprednú čítačku na nahrávanie veľkých súborov do S3 v Golang


Na základe výsledkov vyhľadávania sa zdá, že používanie iba dopredu orientovanej čítačky, ako je čítačka Go `tar`, môže byť náročné pri nahrávaní veľkých súborov do Amazon S3 pomocou AWS SDK for Go.

Kľúčové body sú:

1. Problémy so správou pamäte: AWS SDK pre nahrávač Go's S3 prideľuje a vypĺňa časti vyrovnávacej pamäte pre celý súbor pred ich odovzdaním. To môže spôsobiť nedostatok pamäte procesu pri nahrávaní veľkých súborov pomocou čítačky, ktorá nepodporuje funkcie `Seek` alebo `ReadAt`, ako je čítačka Go `tar`.

2. Intelligent Chunking: Problém GitHub #1104 naznačuje, že SDK by sa dalo vylepšiť tak, aby používala inteligentnejšie chunking čo sa týka čitateľov, ktorí nepodporujú funkcie `Seek` a `ReadAt`. To by pomohlo lepšie spravovať využitie pamäte počas nahrávania veľkých súborov.

3. Streamovanie a viacdielne nahrávanie: AWS SDK for Go podporuje streamovanie a viacdielne nahrávanie, čo môže pomôcť spravovať využitie pamäte počas nahrávania veľkých súborov. Tieto funkcie však nemusia fungovať tak dobre s čítačkou určenou iba na predloženie.

4. Alternatívne riešenia: Výsledky vyhľadávania odporúčajú použiť Minio SDK alebo Google CDK, ktoré môžu mať lepšiu podporu pre streamovanie veľkých súborov do S3. Okrem toho projekt aws-s3-reader-seeker poskytuje vlastnú implementáciu čítačky, ktorá dokáže lepšie spracovať veľké objekty S3 efektívne.

Stručne povedané, aj keď je možné použiť iba doprednú čítačku, ako je čítačka Go `tar` na nahrávanie veľkých súborov do S3 pomocou AWS SDK for Go, nemusí to byť najefektívnejší prístup alebo prístup k pamäti. V takýchto prípadoch môže byť lepšou možnosťou zvážiť alternatívne riešenia alebo použiť funkcie streamovania a viacdielneho nahrávania súpravy SDK.

Citácie:
[1] https://github.com/aws/aws-sdk-go/issues/1104
[2] https://github.com/nikolaydubina/aws-s3-reader/blob/master/aws_s3_reader_seeker.go
[3] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/
[4] https://www.linkedin.com/pulse/golang-uploading-files-aws-s3-bucket-using-pre-signed-tiago-melo
[5] https://pkg.go.dev/github.com/SnellerInc/sneller/aws/s3