Berdasarkan DynamoDb dokumentasi mengapa ada orang yang menggunakan updateItem
bukan putItem
?
PutItem
- Menulis satu item untuk tabel. Jika item yang sama dengan primary key yang ada pada tabel, operasi menggantikan item. Untuk menghitung ditetapkan throughput konsumsi, ukuran item yang penting adalah lebih besar dari dua.UpdateItem
- Memodifikasi satu item di atas meja. DynamoDB menganggap ukuran item seperti yang muncul sebelum dan sesudah update. Ditetapkan throughput yang dikonsumsi mencerminkan lebih besar dari ukuran butir. Bahkan jika anda memperbarui hanya sebuah subset dari item's atribut, UpdateItem
masih akan mengkonsumsi jumlah yang ditetapkan throughput (the lebih besar dari "sebelum" dan "setelah" item sizes).Perbedaan utama antara keduanya adalah, PutItem akan Ganti seluruh item sementara UpdateItem akan Perbarui **** itu.
Misalnya.
Saya memiliki item seperti:
userId = 1
Name= ABC
Gender= Male
Jika saya menggunakan MENEMPATKAN item dengan
UserId = 1
Country = India
Ini akan mengganti Nama dan jenis Kelamin dan sekarang Item baru UserId dan Negara.
Sementara jika anda ingin memperbarui item dari Name = ABC untuk Nama = 123
anda harus menggunakan UpdateItem
Anda dapat menggunakan Menempatkan item untuk memperbarui tapi anda perlu mengirim semua parameter, bukan hanya Parameter yang ingin anda perbarui karena Menggantikan item dengan atribut baru.(Internal itu Menghapus item dan Menambahkan item baru)
Harapan ini masuk akal.
PutItem
akan menimpa seluruh item (atribut) dengan versi baru yang berlalu sementara UpdateItem
hanya akan Update berlalu atribut
Kinerja: PutItem
dapat mempengaruhi pada kinerja jika anda menimpa seluruh item sehingga sering karena melibatkan banyak operasi dari UpdateItem
FindItem, DeleteOldVersion, dan AddNewVersion
Dari biaya prospektif, hal ini berbeda juga:
AWS menghitung biaya berdasarkan digunakan untuk membaca/menulis kapasitas unit yang benar-benar terikat dengan ukuran item yang ditimpa/diperbarui.
Dalam kasus PutItem
, ukuran akan menjadi lebih besar dari yang baru dan versi lama dari item. Misalnya, mengganti 2 KB item dengan 1 KB, Maka akan mengkonsumsi 2 WCUs namun permintaan berikutnya hanya akan menggunakan 1 WCU. jadi jika anda're timpa begitu sering dan ukuran item perubahan berat yang akan menghitung selalu versi yang lebih besar dari barang dan berdampak pada biaya.
Dalam kasus memodifikasi item menggunakan UpdateItem
, ukuran mencakup semua item pra-atribut yang ada, bukan versi yang lebih besar seperti PutItem
:) tapi juga bukan hanya orang-orang yang ditambahkan atau diperbarui :(