Antarmuka terprogram yang bekerja dengan DynamoDB - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Antarmuka terprogram yang bekerja dengan DynamoDB

Setiap AWS SDKmenyediakan satu atau lebih antarmuka terprogram untuk bekerja dengan Amazon DynamoDB. Antarmuka ini memiliki rentang dari pembungkus DynamoDB level rendah sederhana hingga lapisan persistensi berorientasi objek. Antarmuka yang tersedia bervariasi tergantung pada AWS SDK dan bahasa pemrograman yang Anda gunakan.

Antarmuka terprogram tersedia dalam berbagai cara AWS SDKs untuk bekerja dengan DynamoDB.

Bagian berikut menyoroti beberapa antarmuka yang tersedia, menggunakan AWS SDK for Java sebagai contoh. (Tidak semua antarmuka tersedia di semua AWS SDKs.)

Antarmuka tingkat rendah yang bekerja dengan DynamoDB

Setiap bahasa khusus AWS SDK menyediakan antarmuka tingkat rendah untuk Amazon DynamoDB, dengan metode yang sangat mirip dengan permintaan DynamoDB tingkat rendah. API

Dalam beberapa kasus, Anda akan perlu untuk mengidentifikasi jenis data dari atribut-atribut tersebut menggunakan Deskriptor jenis data, seperti S untuk string, atau N untuk angka.

catatan

Antarmuka tingkat rendah tersedia dalam setiap bahasa AWS SDK tertentu.

Program Java berikut menggunakan antarmuka AWS SDK for Java tingkat rendah.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html * * To get an item from an Amazon DynamoDB table using the AWS SDK for Java V2, * its better practice to use the * Enhanced Client, see the EnhancedGetItem example. */ public class GetItem { public static void main(String[] args) { final String usage = """ Usage: <tableName> <key> <keyVal> Where: tableName - The Amazon DynamoDB table from which an item is retrieved (for example, Music3).\s key - The key used in the Amazon DynamoDB table (for example, Artist).\s keyval - The key value that represents the item to get (for example, Famous Band). """; if (args.length != 3) { System.out.println(usage); System.exit(1); } String tableName = args[0]; String key = args[1]; String keyVal = args[2]; System.out.format("Retrieving item \"%s\" from \"%s\"\n", keyVal, tableName); Region region = Region.US_EAST_1; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build(); getDynamoDBItem(ddb, tableName, key, keyVal); ddb.close(); } public static void getDynamoDBItem(DynamoDbClient ddb, String tableName, String key, String keyVal) { HashMap<String, AttributeValue> keyToGet = new HashMap<>(); keyToGet.put(key, AttributeValue.builder() .s(keyVal) .build()); GetItemRequest request = GetItemRequest.builder() .key(keyToGet) .tableName(tableName) .build(); try { // If there is no matching item, GetItem does not return any data. Map<String, AttributeValue> returnedItem = ddb.getItem(request).item(); if (returnedItem.isEmpty()) System.out.format("No item found with the key %s!\n", key); else { Set<String> keys = returnedItem.keySet(); System.out.println("Amazon DynamoDB table attributes: \n"); for (String key1 : keys) { System.out.format("%s: %s\n", key1, returnedItem.get(key1).toString()); } } } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } } }

Antarmuka dokumen yang bekerja dengan DynamoDB

Banyak yang AWS SDKs menyediakan antarmuka dokumen, memungkinkan Anda untuk melakukan operasi bidang data (membuat, membaca, memperbarui, menghapus) pada tabel dan indeks. Dengan antarmuka dokumen, Anda tidak perlu menentukan Deskriptor jenis data. Jenis data yang tersirat oleh semantik data itu sendiri. Ini AWS SDKs juga menyediakan metode untuk dengan mudah mengonversi JSON dokumen ke dan dari tipe data Amazon DynamoDB asli.

Program Java berikut menggunakan antarmuka dokumen AWS SDK for Java. Program ini menciptakan objek Table yang merepresentasikan tabel Music, lalu meminta objek tersebut untuk menggunakan GetItem guna mengambil lagu. Program ini selanjutnya mencetak tahun lagu tersebut dirilis.

Kelas com.amazonaws.services.dynamodbv2.document.DynamoDB mengimplementasikan antarmuka dokumen DynamoDB. Perhatikan bagaimana DynamoDB berfungsi sebagai pembungkus di sekitar klien tingkat rendah (AmazonDynamoDB).

package com.amazonaws.codesamples.gsg; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.document.DynamoDB; import com.amazonaws.services.dynamodbv2.document.GetItemOutcome; import com.amazonaws.services.dynamodbv2.document.Table; public class MusicDocumentDemo { public static void main(String[] args) { AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB docClient = new DynamoDB(client); Table table = docClient.getTable("Music"); GetItemOutcome outcome = table.getItemOutcome( "Artist", "No One You Know", "SongTitle", "Call Me Today"); int year = outcome.getItem().getInt("Year"); System.out.println("The song was released in " + year); } }

Antarmuka persistensi objek yang bekerja dengan DynamoDB

Beberapa AWS SDKs menyediakan antarmuka persistensi objek di mana Anda tidak secara langsung melakukan operasi bidang data. Sebagai gantinya, Anda akan membuat objek yang mewakili item dalam tabel dan indeks Amazon DynamoDB, dan hanya berinteraksi dengan objek tersebut. Ini memungkinkan Anda menulis kode yang berfokus pada objek, bukan kode yang berfokus pada basis data.

catatan

Antarmuka persistensi objek tersedia di AWS SDKs untuk Java dan. NET. Untuk informasi selengkapnya, lihat Antarmuka pemrograman tingkat tinggi untuk DynamoDB DynamoDB.

import com.example.dynamodb.Customer; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.enhanced.dynamodb.model.GetItemEnhancedRequest; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import com.example.dynamodb.Customer; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.enhanced.dynamodb.model.GetItemEnhancedRequest; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; /* * Before running this code example, create an Amazon DynamoDB table named Customer with these columns: * - id - the id of the record that is the key. Be sure one of the id values is `id101` * - custName - the customer name * - email - the email value * - registrationDate - an instant value when the item was added to the table. These values * need to be in the form of `YYYY-MM-DDTHH:mm:ssZ`, such as 2022-07-11T00:00:00Z * * Also, ensure that you have set up your development environment, including your credentials. * * For information, see this documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class EnhancedGetItem { public static void main(String[] args) { Region region = Region.US_EAST_1; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build(); DynamoDbEnhancedClient enhancedClient = DynamoDbEnhancedClient.builder() .dynamoDbClient(ddb) .build(); getItem(enhancedClient); ddb.close(); } public static String getItem(DynamoDbEnhancedClient enhancedClient) { Customer result = null; try { DynamoDbTable<Customer> table = enhancedClient.table("Customer", TableSchema.fromBean(Customer.class)); Key key = Key.builder() .partitionValue("id101").sortValue("tred@noserver.com") .build(); // Get the item by using the key. result = table.getItem( (GetItemEnhancedRequest.Builder requestBuilder) -> requestBuilder.key(key)); System.out.println("******* The description value is " + result.getCustName()); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } return result.getCustName(); } }