Halaman ini menjelaskan permintaan penulisan batch Spanner dan cara Anda dapat menggunakannya untuk mengubah data Spanner.
Anda dapat menggunakan penulisan batch Spanner untuk menyisipkan, mengupdate, atau menghapus beberapa baris dalam tabel Spanner. Penulisan batch Spanner mendukung penulisan latensi rendah tanpa operasi baca, dan menampilkan respons saat mutasi diterapkan dalam batch. Untuk menggunakan penulisan batch, Anda mengelompokkan mutasi terkait, dan semua mutasi dalam grup dilakukan secara atomik. Mutasi di seluruh grup diterapkan dalam urutan yang tidak ditentukan dan tidak saling terkait (non-atomik). Spanner tidak perlu menunggu semua mutasi diterapkan sebelum mengirim respons, yang berarti bahwa penulisan batch memungkinkan kegagalan sebagian. Anda juga dapat mengeksekusi beberapa penulisan batch sekaligus. Untuk mengetahui informasi selengkapnya, lihat Cara menggunakan penulisan batch.
Kasus penggunaan
Penulisan batch Spanner sangat berguna jika Anda ingin melakukan sejumlah besar penulisan tanpa operasi baca, tetapi tidak memerlukan transaksi atomik untuk semua mutasi Anda.
Jika Anda ingin mengelompokkan 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 dengan penguncian.
Batasan
Penulisan batch Spanner memiliki batasan berikut:
Penulisan batch Spanner tidak tersedia menggunakan Google Cloud konsol atau Google Cloud CLI. Fitur ini hanya tersedia menggunakan REST dan RPC API serta library klien Spanner.
Perlindungan replay tidak didukung menggunakan penulisan batch. Mutasi dapat diterapkan lebih dari sekali, dan mutasi yang diterapkan lebih dari sekali dapat menyebabkan kegagalan. Misalnya, jika mutasi penyisipan diputar ulang, mutasi tersebut dapat menghasilkan error sudah ada, atau jika Anda menggunakan kunci berbasis stempel waktu yang dibuat atau di-commit 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 mengembalikan permintaan penulisan batch yang telah selesai. Anda dapat membatalkan permintaan penulisan batch yang sedang berlangsung. Jika Anda membatalkan penulisan batch yang sedang berlangsung, mutasi dalam grup yang belum selesai akan di-roll back. Mutasi dalam grup yang selesai dilakukan ke database.
Ukuran maksimum untuk permintaan penulisan batch sama dengan batas untuk permintaan commit. Untuk mengetahui informasi selengkapnya, lihat Batas untuk membuat, membaca, memperbarui, dan menghapus data.
Cara menggunakan penulisan batch
Untuk menggunakan penulisan batch, Anda harus memiliki izin spanner.databases.write
pada
database yang ingin Anda ubah. Anda dapat menulis batch mutasi
secara non-atomik dalam satu panggilan menggunakan panggilan permintaan
REST atau RPC API.
Anda harus mengelompokkan jenis mutasi berikut saat menggunakan operasi 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 menulis batch menggunakan library klien Spanner.
Contoh kode berikut mengupdate tabel Singers
dengan baris baru.
Library klien
Java
Go
Node
Python
C++
Langkah berikutnya
- Pelajari lebih lanjut transaksi Spanner.