Halaman ini menjelaskan permintaan tulis batch Spanner dan cara menggunakannya untuk mengubah data Spanner Anda.
Anda dapat menggunakan tulis batch Spanner untuk menyisipkan, mengupdate, atau menghapus beberapa baris di tabel Spanner Anda. Tulis batch Spanner mendukung operasi tulis latensi rendah tanpa operasi baca, dan menampilkan respons saat mutasi diterapkan dalam batch. Untuk menggunakan tulis batch, Anda mengelompokkan mutasi terkait, dan semua mutasi dalam grup akan di-commit secara atomik. Mutasi di seluruh grup diterapkan dalam urutan yang tidak ditentukan dan independen satu sama lain (non-atomik). Spanner tidak perlu menunggu semua mutasi diterapkan sebelum mengirim respons, yang berarti tulis batch memungkinkan kegagalan sebagian. Anda juga dapat menjalankan beberapa tulis batch sekaligus. Untuk mengetahui informasi selengkapnya, lihat Cara menggunakan tulis batch.
Kasus penggunaan
Tulis batch Spanner sangat berguna jika Anda ingin melakukan commit sejumlah besar operasi tulis tanpa operasi baca, tetapi tidak memerlukan transaksi atomik untuk semua mutasi Anda.
Jika Anda ingin membuat batch permintaan DML, gunakan DML batch untuk mengubah data Spanner Anda. Untuk mengetahui informasi selengkapnya tentang perbedaan antara DML dan mutasi, lihat Membandingkan DML dan mutasi.
Untuk permintaan mutasi tunggal, sebaiknya gunakan transaksi baca-tulis penguncian.
Batasan
Tulis batch Spanner memiliki batasan berikut:
Tulis batch Spanner tidak tersedia menggunakan Google Cloud konsol atau Google Cloud CLI. Tulis batch hanya tersedia menggunakan REST dan RPC API serta library klien Spanner.
Perlindungan replay tidak didukung menggunakan tulis batch. Mutasi dapat diterapkan lebih dari sekali, dan mutasi yang diterapkan lebih dari sekali dapat menyebabkan kegagalan. Misalnya, jika mutasi penyisipan diulang, mutasi tersebut mungkin menghasilkan error sudah ada, atau jika Anda menggunakan kunci berbasis stempel waktu commit atau yang dibuat dalam mutasi, mutasi tersebut dapat menyebabkan baris tambahan ditambahkan ke tabel. Sebaiknya susun operasi tulis Anda agar bersifat idempoten untuk menghindari masalah ini.
Anda tidak dapat melakukan rollback permintaan tulis batch yang telah selesai. Anda dapat membatalkan permintaan tulis batch yang sedang berlangsung. Jika Anda membatalkan tulis batch yang sedang berlangsung, mutasi dalam grup yang belum selesai akan di-rollback. Mutasi dalam grup yang telah selesai akan di-commit ke database.
Ukuran maksimum untuk permintaan tulis batch sama dengan batas untuk permintaan commit. Untuk mengetahui informasi selengkapnya, lihat Batas untuk membuat, membaca, mengupdate, dan menghapus data.
Cara menggunakan tulis batch
Untuk menggunakan tulis batch, Anda harus memiliki izin spanner.databases.write di database yang ingin Anda ubah. Anda dapat membuat batch mutasi tulis
secara non-atomik dalam satu panggilan menggunakan panggilan permintaan REST
atau RPC API.
Anda harus mengelompokkan jenis mutasi berikut saat menggunakan tulis batch:
- Menyisipkan baris dengan awalan kunci utama yang sama di tabel induk dan turunan.
- Menyisipkan baris ke dalam tabel dengan hubungan kunci asing antar-tabel.
- Jenis mutasi terkait lainnya, bergantung pada skema database dan logika aplikasi Anda.
Anda juga dapat membuat batch tulis menggunakan library klien Spanner.
Contoh kode berikut mengupdate tabel Singers dengan baris baru.
Library klien
C++
C#
Go
Java
Node
PHP
Python
Ruby
Langkah berikutnya
- Pelajari lebih lanjut transaksi Spanner.