Objek gabungan

Buat

Halaman ini menjelaskan objek gabungan, yang Anda buat dari objek yang ada tanpa mentransfer data objek tambahan. Objek gabungan berguna untuk membuat penambahan ke objek yang ada, serta untuk membuat ulang objek yang telah Anda upload sebagai beberapa komponen secara paralel.

Operasi tulis

Operasi tulis menyambungkan data dalam urutan objek sumber tertentu untuk membuat objek baru yang disebut objek gabungan. Objek sumber harus memenuhi persyaratan berikut:

  • Semua objek sumber harus memiliki kelas penyimpanan yang sama.
  • Semua objek sumber harus disimpan di bucket Cloud Storage yang sama.

Saat Anda menjalankan komposisi, perhatikan hal berikut:

  • Anda dapat secara opsional menghapus objek sumber secara permanen sebagai bagian dari proses komposisi. Gunakan opsi ini untuk meminimalkan penagihan untuk objek sementara yang tidak perlu dilindungi oleh penghapusan sementara atau Pembuatan Versi Objek.
  • Anda dapat menyusun antara 1 dan 32 objek sumber.
  • Objek sumber sendiri dapat berupa objek gabungan.

Objek gabungan yang dihasilkan dari komposisi memiliki karakteristik berikut:

  • Objek gabungan memiliki kelas penyimpanan yang sama dengan objek sumber.
  • Objek komposit tidak berubah jika objek sumber kemudian diganti atau dihapus.

Saat menggunakan gcloud storage untuk menjalankan komposisi objek, objek yang dihasilkan memiliki Content-Type yang ditetapkan untuk dicocokkan dengan Content-Type objek sumber pertama.

Metadata objek gabungan

Ada beberapa perbedaan antara metadata objek gabungan dan metadata objek lainnya:

  • Objek gabungan tidak memiliki kolom metadata hash MD5.

    • Nilai MD5 apa pun yang Anda berikan sebagai bagian dari permintaan gabungan akan diabaikan.
  • Nilai ETag objek gabungan tidak didasarkan pada hash MD5, dan kode klien tidak boleh membuat asumsi tentang ETag objek gabungan, kecuali bahwa nilai tersebut berubah setiap kali objek yang mendasarinya berubah sesuai dengan spesifikasi IETF untuk HTTP/1.1.

  • Setiap objek gabungan memiliki kolom metadata jumlah komponen, yang menghitung jumlah objek non-gabungan yang terdapat dalam objek gabungan.

    • Jika Anda menulis ulang objek gabungan ke lokasi atau kelas penyimpanan yang berbeda, hasilnya adalah objek gabungan dengan jumlah komponen 1.

Objek Gabungan Pemeriksaan Integritas

Cloud Storage menggunakan CRC32C untuk memeriksa integritas setiap objek sumber pada waktu upload, dan untuk memungkinkan pemanggil melakukan pemeriksaan integritas pada objek gabungan yang dihasilkan saat didownload. CRC32C adalah kode pendeteksi error yang dapat dihitung secara efisien dari nilai CRC32C komponennya. Aplikasi Anda harus menggunakan CRC32C sebagai berikut:

  • Saat mengupload objek sumber, Anda harus menghitung CRC32C untuk setiap objek menggunakan library CRC32C, seperti salah satu yang tercantum dalam halaman metadata Objek, dan menyertakan nilai tersebut dalam permintaan. Berdasarkan nilai yang Anda berikan, Cloud Storage memvalidasi setiap upload.
  • Operasi tulis otomatis memeriksa apakah objek sumber tersusun dengan benar, dan mengabaikan nilai CRC32C apa pun yang Anda berikan sebagai bagian dari permintaan tulis. CRC32C dari objek gabungan yang dihasilkan akan ditampilkan dalam respons.
  • Jika aplikasi Anda dapat mengubah objek sumber antara waktu mengupload dan menulis objek tersebut, Anda harus menentukan nama khusus generasi untuk objek sumber guna menghindari kondisi race. Atau, Anda dapat membuat nilai CRC32C dari nilai CRC32C objek sumber yang dimaksud dan membandingkannya dengan nilai CRC32C yang ditampilkan oleh operasi tulis.
  • Pada waktu download, Anda harus menghitung CRC32C objek yang didownload dan membandingkannya dengan nilai yang disertakan dalam respons.

Tambahkan dan edit

Anda dapat menggunakan operasi tulis untuk melakukan penambahan dan pengeditan objek.

Untuk menambahkan data ke objek yang ada, pertama-tama Anda membuat objek sementara yang berisi data yang ingin Anda tambahkan. Kemudian, Anda menyusun objek yang ada dengan objek sementara. Sebagai bagian dari proses komposisi, Anda dapat menghapus objek sementara dan versi sebelumnya dari objek asli. Anda juga dapat memberi nama objek yang dihasilkan sama dengan objek aslinya.

Misalnya, di gcloud CLI, perintah berikut menambahkan string new data ke objek yang ada:

$ echo 'new data' | gcloud storage cp - gs://bucket/temporary_object
$ gcloud storage objects compose gs://bucket/existing_object gs://bucket/temporary_object \
    gs://bucket/existing_object --delete-source-objects

Anda juga dapat menggunakan komposisi untuk mendukung ragam dasar pengeditan objek. Misalnya, Anda dapat menulis objek X dari urutan {Y1, Y2, Y3}, mengganti isi Y2, dan menulis ulang X dari komponen yang sama. Perhatikan bahwa hal ini mengharuskan Y1, Y2, dan Y3 tidak dihapus, sehingga Anda akan ditagih untuk komponen tersebut serta untuk komposit.

Konteks objek gabungan

Saat Anda menggunakan operasi gabungkan, Cloud Storage akan menggabungkan semua konteks dari objek sumber dan melampirkannya ke objek tujuan. Proses ini menangani kunci konteks unik dan duplikat seperti yang dijelaskan di bagian berikut.

Perilaku penggabungan ini adalah default. Error ini terjadi saat Anda tidak menentukan konteks untuk objek tujuan dalam permintaan penulisan. Anda dapat mengganti perilaku default ini dengan menghapus konteks atau menentukan konteks baru untuk objek tujuan selama operasi compose.

Kunci konteks unik

Jika objek sumber memiliki kunci konteks unik, Cloud Storage akan langsung melampirkan kunci ini dan nilai yang sesuai ke objek tujuan.

Perhatikan contoh berikut:

Konteks objek sumber A: Department: Engineering, Status: Active

Konteks objek sumber B: Owner: m_jones, Version: 1.1

Setelah operasi komposisi, objek tujuan memiliki konteks gabungan berikut:

  {
    "contexts": {
      "custom": {
        "Department": {
          "value": "Engineering",
          "createTime": "2023-10-26T10:00:00.000Z",
          "updateTime": "2023-10-26T10:00:00.000Z"
        },
        "Status": {
          "value": "Active",
          "createTime": "2023-10-26T10:00:00.000Z",
          "updateTime": "2023-10-26T10:00:00.000Z"
        },
        "Owner": {
          "value": "m_jones",
          "createTime": "2023-10-26T10:00:00.000Z",
          "updateTime": "2023-10-26T10:00:00.000Z"
        },
        "Version": {
          "value": "1.1",
          "createTime": "2023-10-26T10:00:00.000Z",
          "updateTime": "2023-10-26T10:00:00.000Z"
        }
      }
    }
  }
  

Kunci konteks duplikat

Jika beberapa objek sumber memiliki kunci konteks yang sama, nilai dari objek sumber terakhir dalam daftar gabungan yang berisi kunci tersebut akan digunakan untuk objek gabungan.

Misalnya, pertimbangkan objek sumber yang diproses dalam urutan berikut:

  1. Objek sumber A

  2. Objek sumber B

Konteks objek sumber A: Version: 1.0, ReleaseDate: 2024-01-15

Konteks objek sumber B: Version: 1.1, Owner: m_jones

Kedua objek sumber memiliki kunci Version, tetapi objek A memiliki Version: 1.0 dan objek B memiliki Version: 1.1. Karena Cloud Storage memproses objek sumber B setelah objek sumber A, nilai Version dari objek sumber B akan lebih diutamakan dan nilai akhirnya adalah 1.1.

Objek tujuan menggabungkan konteks ini sebagai berikut:

  {
    "contexts": {
      "custom": {
        "Version": {
          "value": "1.1",
          "createTime": "2025-01-01T00:00:00.000Z",
          "updateTime": "2025-01-01T00:00:00.000Z"
        },
        "ReleaseDate": {
          "value": "2024-01-15",
          "createTime": "2025-01-01T00:00:00.000Z",
          "updateTime": "2025-01-01T00:00:00.000Z"
        },
        "Owner": {
          "value": "m_jones",
          "createTime": "2025-01-01T00:00:00.000Z",
          "updateTime": "2025-01-01T00:00:00.000Z"
        }
      }
    }
  }
  

Langkah berikutnya