Salah satu strategi untuk mengupload file besar dikenal sebagai upload gabungan paralel. Dalam upload jenis ini, file dibagi menjadi 32 bagian dan bagian tersebut diupload secara paralel dengan objek sementara, di mana objek akhir dibuat ulang menggunakan objek sementara, dan objek sementara juga akan dihapus.
Upload gabungan paralel bisa jauh lebih cepat jika kecepatan jaringan dan disk bukan merupakan faktor yang membatasi. Namun, objek akhir yang disimpan di bucket Anda adalah objek gabungan yang hanya memiliki hash crc32c, bukan hash MD5. Akibatnya, Anda harus menggunakan crcmod untuk melakukan pemeriksaan integritas saat mendownload objek dengan aplikasi Python. Anda hanya boleh melakukan upload gabungan paralel jika hal berikut berlaku:
Anda tidak perlu memiliki hash MD5 pada objek yang diupload.
Setiap pengguna Python yang perlu mendownload objek Anda telah menginstal google-crc32c atau crcmod.
Misalnya, jika Anda menggunakan Python untuk mengupload aset video yang hanya ditayangkan oleh aplikasi Java, upload gabungan paralel merupakan pilihan yang baik karena memiliki implementasi CRC32C yang efisien yang tersedia di Java.
Cara alat dan API menggunakan upload gabungan paralel
Bergantung pada cara Anda berinteraksi dengan Cloud Storage, upload komposit paralel mungkin dikelola secara otomatis untuk Anda. Bagian ini menjelaskan perilaku upload komposit paralel untuk berbagai alat dan memberikan informasi tentang cara mengubah perilaku tersebut.
Konsol
Konsol Google Cloud tidak melakukan upload komposit paralel.
Command line
Anda dapat mengonfigurasi cara dan waktu gcloud storage cp
melakukan upload
gabungan paralel dengan mengubah properti berikut:
storage/parallel_composite_upload_enabled
: Properti untuk mengaktifkan upload gabungan paralel. JikaFalse
, nonaktifkan upload gabungan paralel. JikaTrue
atauNone
, lakukan upload gabungan paralel untuk objek yang memenuhi kriteria yang ditentukan di properti lain. Setelan defaultnya adalahNone
.storage/parallel_composite_upload_compatibility_check
: Properti untuk mengaktifkan pemeriksaan keamanan. JikaTrue
,gcloud storage
hanya melakukan upload gabungan paralel saat semua kondisi berikut terpenuhi:- Kelas penyimpanan untuk objek yang diupload adalah
STANDARD
. - Bucket tujuan tidak memiliki kebijakan retensi.
- Bucket tujuan tidak mengaktifkan penangguhan objek default.
Perhatikan bahwa untuk memeriksa kondisi ini, gcloud CLI mengambil metadata untuk bucket tujuan sebagai bagian dari perintah upload.
Jika
False
,gcloud storage
tidak melakukan pemeriksaan apa pun. Setelan default-nya adalahTrue
.- Kelas penyimpanan untuk objek yang diupload adalah
storage/parallel_composite_upload_threshold
: Total ukuran file minimum untuk melakukan upload gabungan paralel. Setelan defaultnya adalah 150 MiB.storage/parallel_composite_upload_component_size
: Ukuran maksimum untuk setiap objek sementara. Properti diabaikan jika ukuran file total sangat besar sehingga memerlukan lebih dari 32 bagian.storage/parallel_composite_upload_component_prefix
: Awalan yang digunakan saat memberi nama objek sementara. Properti ini dapat ditetapkan sebagai jalur absolut atau sebagai jalur yang terkait dengan objek akhir. Lihat deskripsi properti untuk mengetahui informasi selengkapnya. Awalan default-nya adalah jalur absolut/gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details
.
Anda dapat memodifikasi properti ini dengan membuat konfigurasi bernama dan menerapkan konfigurasi per perintah menggunakan flag seluruh project --configuration
atau untuk semua perintah gcloud CLI menggunakan perintah gcloud config set
.
Tidak diperlukan ruang disk lokal tambahan saat menggunakan gcloud CLI untuk melakukan upload gabungan paralel. Jika upload gabungan paralel gagal sebelum penyusunan, jalankan kembali perintah gcloud CLI untuk memanfaatkan upload yang dapat dilanjutkan untuk objek sementara yang gagal. Setiap objek sementara yang berhasil diupload sebelum kegagalan tidak akan diupload ulang saat Anda melanjutkan upload.
Objek sementara diberi nama dengan cara berikut:
TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID
Dengan keterangan:
TEMPORARY_PREFIX
dikontrol oleh propertistorage/parallel_composite_upload_component_prefix
.RANDOM_VALUE
adalah nilai numerik acak.HEX_DIGEST
adalah hash yang berasal dari nama resource sumber.COMPONENT_ID
adalah nomor urut komponen.
Biasanya, objek sementara akan dihapus pada akhir upload gabungan paralel. Namun, agar tidak meninggalkan objek sementara, Anda harus memeriksa status keluar dari perintah gcloud CLI, dan Anda harus menghapus secara manual setiap objek sementara yang diupload sebagai bagian dari upload yang dibatalkan.
Library klien
Java
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Anda dapat melakukan upload gabungan paralel dengan menetapkan AllowParallelCompositeUpload
ke true
.
Contoh:
Node.js
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Library klien Node.js tidak mendukung upload komposit paralel. Sebagai gantinya, gunakan upload multibagian XML API.
Python
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Library klien Python tidak mendukung upload komposit paralel. Sebagai gantinya, gunakan upload multibagian XML API.
REST API
JSON API dan XML API mendukung upload bagian objek secara paralel dan menggabungkannya kembali menjadi satu objek menggunakan operasi compose
.
Perhatikan hal-hal berikut saat mendesain kode untuk upload gabungan paralel:
Saat menggunakan operasi
compose
, objek sumber tidak terpengaruh oleh proses penyusunan.Artinya, jika objek tersebut dimaksudkan untuk bersifat sementara, Anda harus secara eksplisit menghapusnya setelah berhasil menyelesaikan penyusunan, atau objek sumber akan tetap berada di bucket Anda dan akan ditagih sesuai penggunaan.
Untuk melindungi dari perubahan pada objek sumber antara permintaan upload dan penyusunan, Anda harus memberikan nomor pembuatan yang diharapkan untuk setiap sumber.