Bekerja dengan item: .NET - Amazon DynamoDB

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 API tingkat rendah AWS SDK for .NET untuk melakukan operasi buat, baca, perbarui, dan hapus (CRUD) pada item dalam tabel. Berikut ini adalah langkah-langkah umum yang Anda ikuti untuk melakukan operasi CRUD data menggunakan API tingkat rendah .NET:

  1. Buat instans dari kelas AmazonDynamoDBClient (klien).

  2. Berikan parameter khusus operasi yang diperlukan dalam objek permintaan yang sesuai.

    Misalnya, gunakan permintaan PutItemRequest saat mengunggah item dan gunakan permintaan GetItemRequest saat mengambil item yang sudah ada.

    Anda dapat menggunakan objek permintaan untuk menyediakan parameter wajib dan opsional.

  3. Jalankan metode yang sesuai yang disediakan oleh klien dengan meneruskan objek permintaan yang Anda buat pada langkah sebelumnya.

    Klien AmazonDynamoDBClient menyediakan metode PutItem, GetItem, UpdateItem, dan DeleteItem untuk operasi CRUD.

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 langkah-langkah untuk mengunggah item menggunakan .NET SDK API tingkat rendah:

  1. Buat instans kelas AmazonDynamoDBClient.

  2. Berikan parameter yang diperlukan dengan membuat instans kelas PutItemRequest.

    Untuk menaruh item, Anda harus memberikan nama tabel dan itemnya.

  3. Jalankan metode PutItem dengan menyediakan objek PutItemRequest 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, dan ConditionExpression menentukan bahwa barang tersebut hanya dapat diganti jika barang yang ada memiliki atribut ISBN 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 API AWS SDK for .NET tingkat rendah.

  1. Buat instans kelas AmazonDynamoDBClient.

  2. Berikan parameter yang diperlukan dengan membuat instans kelas GetItemRequest.

    Untuk mendapatkan item, Anda harus memberikan nama tabel dan kunci primer item tersebut.

  3. Jalankan metode GetItem dengan menyediakan objek GetItemRequest 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 Konsistensi baca.

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 yang ada dari item tersebut tidak akan berubah.

Berikut langkah-langkah untuk memperbarui item menggunakan .NET SDK API tingkat rendah:

  1. Buat instans kelas AmazonDynamoDBClient.

  2. 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.

  3. Jalankan metode UpdateItem dengan menyediakan objek UpdateItemRequest yang Anda buat pada langkah sebelumnya.

Contoh kode #C berikut menunjukkan langkah-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 dan ConditionExpression 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 .NET SDK API tingkat rendah.

  1. Buat instans kelas AmazonDynamoDBClient.

  2. Berikan parameter yang diperlukan dengan membuat instans kelas DeleteItemRequest.

    Untuk menghapus item, diperlukan nama tabel dan kunci primer item.

  3. Jalankan metode DeleteItem dengan menyediakan objek DeleteItemRequest 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:

  • ExpressionAttributeValuesdan ConditionExpression 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 menempatkan dan menghapus 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 .NET SDK API tingkat rendah.

  1. Buat instans kelas AmazonDynamoDBClient.

  2. Jelaskan semua operasi tempatkan dan hapus dengan membuat instans dari kelas BatchWriteItemRequest.

  3. Jalankan metode BatchWriteItem dengan menyediakan objek BatchWriteItemRequest yang Anda buat pada langkah sebelumnya.

  4. 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 menunjukkan langkah-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 API tingkat rendah AWS SDK for .NET.

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 API AWS SDK for .NET tingkat rendah.

  1. Buat instans kelas AmazonDynamoDBClient.

  2. Berikan parameter yang diperlukan dengan membuat instans kelas BatchGetItemRequest.

    Untuk mengambil beberapa item, nama tabel dan daftar nilai kunci primer diperlukan.

  3. Jalankan metode BatchGetItem dengan menyediakan objek BatchGetItemRequest yang Anda buat pada langkah sebelumnya.

  4. 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 menunjukkan langkah-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.