Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan item:. NET
Anda dapat menggunakan AWS SDK for .NET level rendah API untuk melakukan operasi create, read, update, dan delete (CRUD) khas pada item dalam tabel. Berikut ini adalah langkah-langkah umum yang Anda ikuti untuk melakukan CRUD operasi data menggunakan. NETtingkat rendahAPI:
-
Buat instans dari kelas
AmazonDynamoDBClient
(klien). -
Berikan parameter khusus operasi yang diperlukan dalam objek permintaan yang sesuai.
Misalnya, gunakan permintaan
PutItemRequest
saat mengunggah item dan gunakan permintaanGetItemRequest
saat mengambil item yang sudah ada.Anda dapat menggunakan objek permintaan untuk menyediakan parameter wajib dan opsional.
-
Jalankan metode yang sesuai yang disediakan oleh klien dengan meneruskan objek permintaan yang Anda buat pada langkah sebelumnya.
AmazonDynamoDBClient
Klien menyediakanPutItem
,GetItem
,UpdateItem
, danDeleteItem
metode untuk CRUD operasi.
Topik
- Menempatkan item
- Mendapatkan item
- Memperbarui Item
- Penghitung atom
- Menghapus item
- Penulisan batch: Menempatkan dan menghapus beberapa item
- Batch get: Mendapatkan beberapa item
- Contoh: CRUD operasi menggunakan tingkat AWS SDK for .NET rendah API
- Contoh: Operasi Batch menggunakan level AWS SDK for .NET rendah API
- Contoh: Menangani atribut tipe biner menggunakan level AWS SDK for .NET rendah API
Menempatkan item
Metode PutItem
mengunggah item ke tabel. Jika item ada, item tersebut akan menggantikan keseluruhan item.
catatan
Alih-alih mengganti seluruh item, jika Anda hanya ingin memperbarui atribut tertentu, Anda dapat menggunakan metode UpdateItem
. Untuk informasi selengkapnya, lihat Memperbarui Item.
Berikut ini adalah langkah-langkah untuk mengunggah item menggunakan level rendah. NETSDKAPI:
-
Buat instans dari kelas
AmazonDynamoDBClient
. -
Berikan parameter yang diperlukan dengan membuat instans kelas
PutItemRequest
.Untuk menaruh item, Anda harus memberikan nama tabel dan itemnya.
-
Jalankan metode
PutItem
dengan menyediakan objekPutItemRequest
yang Anda buat pada langkah sebelumnya.
Contoh #C berikut menunjukkan langkah-langkah sebelumnya. Contoh tersebut mengunggah item ke tabel ProductCatalog
.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new PutItemRequest { TableName = tableName, Item = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "201" }}, { "Title", new AttributeValue { S = "Book 201 Title" }}, { "ISBN", new AttributeValue { S = "11-11-11-11" }}, { "Price", new AttributeValue { S = "20.00" }}, { "Authors", new AttributeValue { SS = new List<string>{"Author1", "Author2"} } } } }; client.PutItem(request);
Pada contoh sebelumnya, Anda mengunggah item buku yang memiliki atribut Id
, Title
, ISBN
, dan Authors
. Perhatikan bahwa Id
adalah atribut jenis numerik, dan semua atribut lainnya adalah jenis string. Penulis adalah set String
.
Menentukan parameter opsional
Anda juga dapat memberikan parameter opsional menggunakan objek PutItemRequest
seperti yang ditunjukkan dalam contoh C# berikut. Contoh tersebut menentukan parameter opsional berikut:
-
ExpressionAttributeNames
,ExpressionAttributeValues
, danConditionExpression
tentukan bahwa item dapat diganti hanya jika item yang ada memiliki ISBN atribut dengan nilai tertentu. -
Parameter
ReturnValues
untuk meminta item lama dalam respons.
contoh
var request = new PutItemRequest { TableName = tableName, Item = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "104" }}, { "Title", new AttributeValue { S = "Book 104 Title" }}, { "ISBN", new AttributeValue { S = "444-4444444444" }}, { "Authors", new AttributeValue { SS = new List<string>{"Author3"}}} }, // Optional parameters. ExpressionAttributeNames = new Dictionary<string,string>() { {"#I", "ISBN"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":isbn",new AttributeValue {S = "444-4444444444"}} }, ConditionExpression = "#I = :isbn" }; var response = client.PutItem(request);
Untuk informasi lebih lanjut, lihat PutItem.
Mendapatkan item
Metode GetItem
mengambil item.
catatan
Untuk mengambil beberapa item, Anda dapat menggunakan metode BatchGetItem
. Untuk informasi selengkapnya, lihat Batch get: Mendapatkan beberapa item.
Berikut ini adalah langkah-langkah untuk mengambil item yang ada menggunakan level rendah AWS SDK for .NET API.
-
Buat instans dari kelas
AmazonDynamoDBClient
. -
Berikan parameter yang diperlukan dengan membuat instans kelas
GetItemRequest
.Untuk mendapatkan item, Anda harus memberikan nama tabel dan kunci primer item tersebut.
-
Jalankan metode
GetItem
dengan menyediakan objekGetItemRequest
yang Anda buat pada langkah sebelumnya.
Contoh #C berikut menunjukkan langkah-langkah sebelumnya. Contoh tersebut mengambil item dari tabel ProductCatalog
.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new GetItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, }; var response = client.GetItem(request); // Check the response. var result = response.GetItemResult; var attributeMap = result.Item; // Attribute list in the response.
Menentukan parameter opsional
Anda juga dapat memberikan parameter opsional menggunakan objek GetItemRequest
, seperti yang ditunjukkan dalam contoh C# berikut. Contoh tersebut menentukan parameter opsional berikut:
-
Parameter
ProjectionExpression
untuk menentukan atribut yang akan diambil. -
Parameter
ConsistentRead
untuk melakukan bacaan sangat konsisten. Untuk mempelajari selengkapnya tentang konsistensi baca, lihat DynamoDB membaca konsistensi.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new GetItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, // Optional parameters. ProjectionExpression = "Id, ISBN, Title, Authors", ConsistentRead = true }; var response = client.GetItem(request); // Check the response. var result = response.GetItemResult; var attributeMap = result.Item;
Untuk informasi lebih lanjut, lihat GetItem.
Memperbarui Item
Metode UpdateItem
memperbarui item yang ada jika ada. Anda dapat menggunakan operasi UpdateItem
untuk memperbarui nilai atribut yang ada, menambahkan atribut baru, atau menghapus atribut dari koleksi yang ada. Jika item yang memiliki kunci primer yang ditentukan tidak ditemukan, item baru akan ditambahkan.
Operasi UpdateItem
menggunakan panduan berikut:
-
Jika item tidak ada,
UpdateItem
menambahkan item baru menggunakan kunci primer yang ditentukan dalam input. -
Jika item ada,
UpdateItem
menerapkan pembaruan sebagai berikut:-
Menggantikan nilai atribut yang ada dengan nilai dalam pembaruan.
-
Jika atribut yang Anda berikan pada input tidak ada, atribut baru akan ditambahkan ke item tersebut.
-
Jika atribut input adalah null, atribut tersebut akan dihapus, jika ada.
-
Jika Anda menggunakan
ADD
untukAction
, Anda dapat menambahkan nilai ke set yang sudah ada (set string atau angka), atau menambahkan secara matematis (menggunakan angka positif) atau mengurangi (menggunakan angka negatif) dari nilai atribut numerik yang ada.
-
catatan
Operasi PutItem
juga dapat melakukan pembaruan. Untuk informasi selengkapnya, lihat Menempatkan item. Misalnya, jika Anda memanggil PutItem
untuk mengunggah item dan kunci primer ada, operasi PutItem
menggantikan seluruh item. Jika terdapat atribut dalam item yang ada yang tidak ditentukan dalam input, operasi PutItem
akan menghapus atribut tersebut. Namun, UpdateItem
hanya memperbarui atribut input yang ditentukan. Atribut lain item tersebut yang ada tidak akan berubah.
Berikut ini adalah langkah-langkah untuk memperbarui item yang ada menggunakan level rendah. NETSDKAPI:
-
Buat instans dari kelas
AmazonDynamoDBClient
. -
Berikan parameter yang diperlukan dengan membuat instans kelas
UpdateItemRequest
.Ini adalah objek permintaan tempat Anda menjelaskan semua pembaruan, seperti menambahkan atribut, memperbarui atribut yang ada, atau menghapus atribut. Untuk menghapus atribut yang ada, tentukan nama atribut dengan nilai null.
-
Jalankan metode
UpdateItem
dengan menyediakan objekUpdateItemRequest
yang Anda buat pada langkah sebelumnya.
Contoh kode #C berikut mendemonstrasikan langkah sebelumnya. Contoh tersebut memperbarui item buku dalam tabel ProductCatalog
. Contoh tersebut menambahkan penulis baru ke koleksi Authors
, dan menghapus atribut ISBN
yang ada. Contoh tersebut juga mengurangi harga sebanyak satu.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, ExpressionAttributeNames = new Dictionary<string,string>() { {"#A", "Authors"}, {"#P", "Price"}, {"#NA", "NewAttribute"}, {"#I", "ISBN"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":auth",new AttributeValue { SS = {"Author YY","Author ZZ"}}}, {":p",new AttributeValue {N = "1"}}, {":newattr",new AttributeValue {S = "someValue"}}, }, // This expression does the following: // 1) Adds two new authors to the list // 2) Reduces the price // 3) Adds a new attribute to the item // 4) Removes the ISBN attribute from the item UpdateExpression = "ADD #A :auth SET #P = #P - :p, #NA = :newattr REMOVE #I" }; var response = client.UpdateItem(request);
Menentukan parameter opsional
Anda juga dapat memberikan parameter opsional menggunakan objek UpdateItemRequest
, seperti yang ditunjukkan dalam contoh C# berikut. Contoh tersebut menentukan parameter opsional berikut:
-
ExpressionAttributeValues
danConditionExpression
untuk menentukan bahwa harga dapat diperbarui hanya jika harga yang ada adalah 20,00. -
Parameter
ReturnValues
untuk meminta item yang diperbarui dalam respons.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, // Update price only if the current price is 20.00. ExpressionAttributeNames = new Dictionary<string,string>() { {"#P", "Price"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":newprice",new AttributeValue {N = "22"}}, {":currprice",new AttributeValue {N = "20"}} }, UpdateExpression = "SET #P = :newprice", ConditionExpression = "#P = :currprice", TableName = tableName, ReturnValues = "ALL_NEW" // Return all the attributes of the updated item. }; var response = client.UpdateItem(request);
Untuk informasi lebih lanjut, lihat UpdateItem.
Penghitung atom
Anda dapat menggunakan updateItem
untuk mengimplementasi penghitung atom, di mana Anda menambahkan atau mengurangi nilai atribut yang ada tanpa mengganggu permintaan tulis lainnya. Untuk memperbarui penghitung atom, gunakan updateItem
dengan atribut jenis Number
dalam parameter UpdateExpression
, dan ADD
sebagai Action
.
Contoh berikut menunjukkan hal ini, menambahkan satu atribut Quantity
.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { Key = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "121" } } }, ExpressionAttributeNames = new Dictionary<string, string>() { {"#Q", "Quantity"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":incr",new AttributeValue {N = "1"}} }, UpdateExpression = "SET #Q = #Q + :incr", TableName = tableName }; var response = client.UpdateItem(request);
Menghapus item
Metode DeleteItem
menghapus item dari tabel.
Berikut ini adalah langkah-langkah untuk menghapus item menggunakan level rendah. NETSDKAPI.
-
Buat instans dari kelas
AmazonDynamoDBClient
. -
Berikan parameter yang diperlukan dengan membuat instans kelas
DeleteItemRequest
.Untuk menghapus item, diperlukan nama tabel dan kunci primer item.
-
Jalankan metode
DeleteItem
dengan menyediakan objekDeleteItemRequest
yang Anda buat pada langkah sebelumnya.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new DeleteItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "201" } } }, }; var response = client.DeleteItem(request);
Menentukan parameter opsional
Anda juga dapat memberikan parameter opsional menggunakan objek DeleteItemRequest
seperti yang ditunjukkan dalam contoh kode C# berikut. Contoh tersebut menentukan parameter opsional berikut:
-
ExpressionAttributeValues
danConditionExpression
untuk menentukan bahwa item buku dapat dihapus hanya jika tidak lagi dalam publikasi (nilai InPublication atribut salah). -
Parameter
ReturnValues
untuk meminta item yang dihapus dalam respons.
contoh
var request = new DeleteItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "201" } } }, // Optional parameters. ReturnValues = "ALL_OLD", ExpressionAttributeNames = new Dictionary<string, string>() { {"#IP", "InPublication"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":inpub",new AttributeValue {BOOL = false}} }, ConditionExpression = "#IP = :inpub" }; var response = client.DeleteItem(request);
Untuk informasi lebih lanjut, lihat DeleteItem.
Penulisan batch: Menempatkan dan menghapus beberapa item
Penulisan batch merujuk pada penempatan dan penghapusan beberapa item dalam satu batch. Metode BatchWriteItem
memungkinkan Anda untuk memasukkan dan menghapus beberapa item dari satu atau lebih tabel dalam satu panggilan. Berikut ini adalah langkah-langkah untuk mengambil beberapa item menggunakan level rendah. NETSDKAPI.
-
Buat instans dari kelas
AmazonDynamoDBClient
. -
Jelaskan semua operasi tempatkan dan hapus dengan membuat instans dari kelas
BatchWriteItemRequest
. -
Jalankan metode
BatchWriteItem
dengan menyediakan objekBatchWriteItemRequest
yang Anda buat pada langkah sebelumnya. -
Proses responsnya. Anda harus memeriksa apakah ada item permintaan yang belum diproses yang dikembalikan sebagai respons. Hal ini dapat terjadi jika Anda mencapai kuota throughput yang disediakan atau kesalahan sementara lainnya. Selain itu, DynamoDB membatasi ukuran permintaan dan jumlah operasi yang dapat Anda tentukan dalam permintaan. Jika Anda melebihi batas ini, DynamoDB menolak permintaan tersebut. Untuk informasi lebih lanjut, lihat BatchWriteItem.
Contoh kode #C berikut mendemonstrasikan langkah sebelumnya. Contoh ini membuat BatchWriteItemRequest
untuk melakukan operasi tulis berikut:
-
Tempatkan satu item dalam tabel
Forum
. -
Tempatkan dan hapus satu item dari tabel
Thread
.
Kode menjalankan BatchWriteItem
untuk melakukan operasi batch.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; string table2Name = "Thread"; var request = new BatchWriteItemRequest { RequestItems = new Dictionary<string, List<WriteRequest>> { { table1Name, new List<WriteRequest> { new WriteRequest { PutRequest = new PutRequest { Item = new Dictionary<string,AttributeValue> { { "Name", new AttributeValue { S = "Amazon S3 forum" } }, { "Threads", new AttributeValue { N = "0" }} } } } } } , { table2Name, new List<WriteRequest> { new WriteRequest { PutRequest = new PutRequest { Item = new Dictionary<string,AttributeValue> { { "ForumName", new AttributeValue { S = "Amazon S3 forum" } }, { "Subject", new AttributeValue { S = "My sample question" } }, { "Message", new AttributeValue { S = "Message Text." } }, { "KeywordTags", new AttributeValue { SS = new List<string> { "Amazon S3", "Bucket" } } } } } }, new WriteRequest { DeleteRequest = new DeleteRequest { Key = new Dictionary<string,AttributeValue>() { { "ForumName", new AttributeValue { S = "Some forum name" } }, { "Subject", new AttributeValue { S = "Some subject" } } } } } } } } }; response = client.BatchWriteItem(request);
Untuk contoh pekerjaan, lihat Contoh: Operasi Batch menggunakan level AWS SDK for .NET rendah API.
Batch get: Mendapatkan beberapa item
Metode BatchGetItem
memungkinkan Anda mengambil beberapa item dari satu atau lebih tabel.
catatan
Untuk mengambil satu item, Anda dapat menggunakan metode GetItem
.
Berikut ini adalah langkah-langkah untuk mengambil beberapa item menggunakan level rendah AWS SDK for .NET API.
-
Buat instans dari kelas
AmazonDynamoDBClient
. -
Berikan parameter yang diperlukan dengan membuat instans kelas
BatchGetItemRequest
.Untuk mengambil beberapa item, nama tabel dan daftar nilai kunci primer diperlukan.
-
Jalankan metode
BatchGetItem
dengan menyediakan objekBatchGetItemRequest
yang Anda buat pada langkah sebelumnya. -
Proses responsnya. Anda harus memeriksa apakah ada kunci yang belum diproses, yang dapat terjadi jika Anda mencapai kuota throughput yang disediakan atau kesalahan sementara lainnya.
Contoh kode #C berikut mendemonstrasikan langkah sebelumnya. Contoh tersebut mengambil item dari dua tabel, Forum
dan Thread
. Permintaan menentukan dua item dalam Forum
dan tiga item dalam tabel Thread
. Respons tersebut mencakup item dari kedua tabel. Kode tersebut menunjukkan bagaimana Anda dapat memproses respons.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; string table2Name = "Thread"; var request = new BatchGetItemRequest { RequestItems = new Dictionary<string, KeysAndAttributes>() { { table1Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "DynamoDB" } } }, new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "Amazon S3" } } } } } }, { table2Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "DynamoDB" } }, { "Subject", new AttributeValue { S = "DynamoDB Thread 1" } } }, new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "DynamoDB" } }, { "Subject", new AttributeValue { S = "DynamoDB Thread 2" } } }, new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "Amazon S3" } }, { "Subject", new AttributeValue { S = "Amazon S3 Thread 1" } } } } } } } }; var response = client.BatchGetItem(request); // Check the response. var result = response.BatchGetItemResult; var responses = result.Responses; // The attribute list in the response. var table1Results = responses[table1Name]; Console.WriteLine("Items in table {0}" + table1Name); foreach (var item1 in table1Results.Items) { PrintItem(item1); } var table2Results = responses[table2Name]; Console.WriteLine("Items in table {1}" + table2Name); foreach (var item2 in table2Results.Items) { PrintItem(item2); } // Any unprocessed keys? could happen if you exceed ProvisionedThroughput or some other error. Dictionary<string, KeysAndAttributes> unprocessedKeys = result.UnprocessedKeys; foreach (KeyValuePair<string, KeysAndAttributes> pair in unprocessedKeys) { Console.WriteLine(pair.Key, pair.Value); }
Menentukan parameter opsional
Anda juga dapat memberikan parameter opsional menggunakan objek BatchGetItemRequest
seperti yang ditunjukkan dalam contoh kode C# berikut. Contoh tersebut mengambil dua item dari tabel Forum
. Contoh tersebut menentukan parameter opsional berikut:
-
Parameter
ProjectionExpression
untuk menentukan atribut yang akan diambil.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; var request = new BatchGetItemRequest { RequestItems = new Dictionary<string, KeysAndAttributes>() { { table1Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "DynamoDB" } } }, new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "Amazon S3" } } } } }, // Optional - name of an attribute to retrieve. ProjectionExpression = "Title" } } }; var response = client.BatchGetItem(request);
Untuk informasi lebih lanjut, lihat BatchGetItem.