Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan pernyataan batch di Amazon Keyspaces
Anda dapat menggabungkan beberapaINSERT,UPDATE, dan DELETE operasi ke dalam BATCH pernyataan. LOGGEDbatch adalah default.
batch_statement ::= BEGIN [ UNLOGGED ] BATCH [ USING update_parameter( AND update_parameter)* ] modification_statement ( ';' modification_statement )* APPLY BATCH modification_statement ::= insert_statement | update_statement | delete_statement
Ketika Anda menjalankan pernyataan batch, driver menggabungkan semua pernyataan dalam batch ke dalam operasi batch tunggal.
Untuk memutuskan jenis operasi batch yang akan digunakan, Anda dapat mempertimbangkan pedoman berikut.
- Gunakan batch yang dicatat saat:
-
-
Anda membutuhkan jaminan transaksi atom.
-
Latensi yang sedikit lebih tinggi adalah trade-off yang dapat diterima.
-
- Gunakan batch yang tidak tersumbat saat:
-
-
Anda perlu mengoptimalkan operasi partisi tunggal.
-
Anda ingin mengurangi overhead jaringan.
-
Anda memiliki persyaratan throughput tinggi.
-
Untuk informasi tentang kuota pernyataan batch, lihatKuota untuk Amazon Keyspaces (untuk Apache Cassandra).
Batch yang tidak tersumbat
Dengan batch yang tidak tercatat, Amazon Keyspaces memproses beberapa operasi sebagai permintaan tunggal tanpa mempertahankan log batch. Dengan operasi batch yang tidak tercatat, ada kemungkinan beberapa tindakan berhasil sementara yang lain gagal. Batch yang tidak tersumbat berguna saat Anda ingin:
-
Optimalkan operasi dalam satu partisi.
-
Kurangi lalu lintas jaringan dengan mengelompokkan permintaan terkait.
Sintaks untuk batch yang tidak tercatat mirip dengan batch yang dicatat, dengan penambahan kata kunci. UNLOGGED
BEGIN UNLOGGED BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith'); APPLY BATCH;
Batch yang dicatat
Batch yang dicatat menggabungkan beberapa tindakan penulisan ke dalam satu operasi atom. Saat Anda menjalankan batch yang dicatat:
-
Semua tindakan berhasil bersama atau gagal bersama.
-
Operasi ini sinkron dan idempoten.
-
Anda dapat menulis ke beberapa tabel Amazon Keyspaces, selama mereka berada di AWS akun yang sama dan. Wilayah AWS
Batch yang dicatat mungkin memiliki latensi yang sedikit lebih tinggi. Untuk aplikasi throughput tinggi, pertimbangkan untuk menggunakan batch yang tidak tercatat.
Tidak ada biaya tambahan untuk menggunakan batch yang dicatat di Amazon Keyspaces. Anda hanya membayar untuk penulisan yang merupakan bagian dari operasi batch Anda. Amazon Keyspaces melakukan dua penulisan yang mendasari setiap baris dalam batch: satu untuk menyiapkan baris untuk batch dan satu untuk melakukan batch. Saat merencanakan kapasitas untuk tabel yang menggunakan batch yang dicatat, ingatlah bahwa setiap baris dalam batch membutuhkan dua kali kapasitas operasi penulisan standar. Misalnya, jika aplikasi Anda menjalankan satu batch yang dicatat per detik dengan tiga baris 1KB, Anda perlu menyediakan enam unit kapasitas tulis (WCUs) dibandingkan dengan hanya tiga WCUs untuk penulisan individual atau batch yang tidak tercatat.
Untuk informasi tentang harga, lihat harga Amazon Keyspaces (untuk Apache Cassandra
Praktik terbaik untuk operasi batch
Pertimbangkan praktik yang disarankan berikut saat menggunakan operasi batch Amazon Keyspaces.
-
Aktifkan penskalaan otomatis untuk memastikan bahwa Anda memiliki kapasitas throughput yang cukup untuk tabel Anda untuk menangani operasi batch dan persyaratan throughput tambahan dari batch yang dicatat.
-
Gunakan operasi individual atau batch yang tidak tercatat saat operasi dapat berjalan secara independen tanpa memengaruhi kebenaran aplikasi.
-
Rancang aplikasi Anda untuk meminimalkan pembaruan bersamaan ke baris yang sama, karena operasi batch simultan dapat bertentangan dan gagal.
-
Untuk konsumsi data massal throughput tinggi tanpa persyaratan atomisitas, gunakan operasi penulisan individual atau batch yang tidak tercatat.
Konsistensi dan konkurensi
Amazon Keyspaces memberlakukan aturan konsistensi dan konkurensi berikut untuk batch yang dicatat:
-
Semua operasi batch menggunakan tingkat
LOCAL_QUORUMkonsistensi. -
Batch bersamaan yang mempengaruhi baris yang berbeda dapat dieksekusi secara bersamaan.
Bersamaan
INSERT,UPDATE, atauDELETEoperasi pada baris yang terlibat dalam batch yang sedang berlangsung gagal dengan konflik.
Operator dan kondisi yang didukung
- Operator
WHEREklausa yang didukung: -
Kesetaraan (=)
- Operator yang tidak didukung:
-
Operator jangkauan (>, <, >=, <=)
Operator
INOperator
LIKEOperator
BETWEEN
- Tidak didukung dalam batch yang dicatat:
-
Beberapa pernyataan yang mempengaruhi baris yang sama
Operasi kontra
Rentang menghapus
Kondisi kegagalan pernyataan batch yang dicatat
Operasi batch yang dicatat mungkin gagal dalam salah satu kasus berikut:
-
Ekspresi kondisi (seperti
IF NOT EXISTSatauIF) dievaluasi menjadi false. -
Satu atau lebih operasi berisi parameter yang tidak valid.
-
Permintaan bertentangan dengan operasi batch lain yang berjalan pada baris yang sama.
-
Tabel tidak memiliki kapasitas yang disediakan yang memadai.
-
Baris melebihi batas ukuran maksimum.
-
Format data input tidak valid.
Pernyataan Batch dan replikasi Multi-wilayah
Dalam penerapan Multi-wilayah:
-
Operasi Wilayah Sumber bersifat sinkron dan atom.
-
Operasi Wilayah Tujuan tidak sinkron.
-
Semua operasi batch dijamin untuk mereplikasi, tetapi mungkin tidak mempertahankan isolasi selama aplikasi.
Pantau operasi batch
Anda dapat memantau operasi batch menggunakan CloudWatch metrik Amazon untuk melacak kinerja, kesalahan, dan pola penggunaan. Amazon Keyspaces menyediakan CloudWatch metrik berikut untuk memantau operasi batch per tabel:
SuccessfulRequestCount— Lacak operasi batch yang berhasil.Latency- Ukur kinerja operasi batch.ConsumedWriteCapacityUnits— Memantau konsumsi kapasitas operasi batch.
Untuk informasi selengkapnya, lihat Metrik Amazon Keyspaces.
Selain CloudWatch metrik, Anda dapat menggunakan AWS CloudTrail untuk mencatat semua tindakan API Amazon Keyspaces. Setiap tindakan API dalam batch dicatat CloudTrail sehingga memudahkan untuk melacak dan mengaudit operasi batch di tabel Amazon Keyspaces Anda.
Contoh operasi Batch
Berikut ini adalah contoh pernyataan batch dasar yang dicatat.
BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith'); APPLY BATCH;
Ini adalah contoh dari batch yang mencakupINSERT,UPDATE, dan DELETE pernyataan.
BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); UPDATE users SET firstname = 'Johnny' WHERE id = 2; DELETE FROM users WHERE id = 3; APPLY BATCH;
Ini adalah contoh batch yang menggunakan stempel waktu sisi klien.
BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Stiles') USING TIMESTAMP 1669069624; INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Doe') USING TIMESTAMP 1669069624; APPLY BATCH; BEGIN BATCH UPDATE users USING TIMESTAMP 1669069624 SET firstname = 'Carlos' WHERE id = 1; UPDATE users USING TIMESTAMP 1669069624 SET firstname = 'Diego' WHERE id = 2; APPLY BATCH;
Ini adalah contoh dari batch bersyarat.
BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'Jane', 'Doe') IF NOT EXISTS; INSERT INTO users (id, firstname, lastname) VALUES (2, 'John', 'Doe') IF NOT EXISTS; APPLY BATCH; BEGIN BATCH UPDATE users SET lastname = 'Stiles' WHERE id = 1 IF lastname = 'Doe'; UPDATE users SET lastname = 'Stiles' WHERE id = 2 IF lastname = 'Doe'; APPLY BATCH;
Ini adalah contoh batch yang menggunakan Time to Live (TTL).
BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe') USING TTL 3600; INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith') USING TTL 7200; APPLY BATCH;
Ini adalah contoh pernyataan batch yang memperbarui beberapa tabel.
BEGIN BATCH INSERT INTO users (id, firstname) VALUES (1, 'John'); INSERT INTO user_emails (user_id, email) VALUES (1, 'john@example.com'); APPLY BATCH;
Ini adalah contoh operasi batch menggunakan tipe yang ditentukan pengguna ()UDTs. Contohnya mengasumsikan bahwa UDT address ada.
BEGIN BATCH INSERT INTO users (id, firstname, address) VALUES (1, 'John', {street: '123 Main St', city: 'NYC', zip: '10001'}); INSERT INTO users (id, firstname, address) VALUES (2, 'Jane', {street: '456 Oak Ave', city: 'LA', zip: '90210'}); APPLY BATCH; BEGIN BATCH UPDATE users SET address.zip = '10002' WHERE id = 1; UPDATE users SET address.city = 'Boston' WHERE id = 2; APPLY BATCH;