Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Indeks Sekunder Lokal: .NET
Topik
Anda dapat menggunakan API tingkat rendah AWS SDK for .NET untuk membuat tabel Amazon DynamoDB dengan satu atau beberapa indeks sekunder lokal, mendeskripsikan indeks pada tabel, dan melakukan kueri menggunakan indeks. Operasi ini dipetakan ke tindakan API DynamoDB tingkat rendah yang sesuai. Untuk informasi selengkapnya, lihat . NETcontoh kode.
Berikut ini adalah langkah-langkah umum untuk operasi tabel menggunakan API tingkat rendah .NET.
-
Buat instans kelas
AmazonDynamoDBClient
. -
Berikan parameter wajib dan opsional untuk operasi dengan membuat objek permintaan yang sesuai.
Misalnya, buat objek
CreateTableRequest
untuk membuat tabel dan objekQueryRequest
untuk mengkueri tabel atau indeks. -
Jalankan metode sesuai yang ditentukan oleh klien yang Anda buat pada langkah sebelumnya.
Membuat tabel dengan Indeks Sekunder Lokal
Indeks sekunder lokal harus dibuat pada saat Anda membuat tabel. Untuk melakukannya, gunakan CreateTable
dan berikan spesifikasi Anda untuk satu atau beberapa indeks sekunder lokal. Contoh kode C# berikut membuat tabel untuk menyimpan informasi tentang lagu dalam koleksi musik. Kunci partisinya adalah Artist
dan kunci urutannya adalah SongTitle
. Indeks sekunder, AlbumTitleIndex
, memfasilitasi kueri berdasarkan judul album.
Berikut ini adalah langkah-langkah untuk membuat tabel dengan indeks sekunder lokal, menggunakan API tingkat rendah .NET.
-
Buat instans kelas
AmazonDynamoDBClient
. -
Buat instans kelas
CreateTableRequest
untuk memberikan informasi permintaan.Anda harus memberikan nama tabel, kunci primernya, dan nilai throughput yang ditentukan. Untuk indeks sekunder lokal, Anda harus memberikan nama indeks, nama dan jenis data kunci urutan indeks, skema kunci untuk indeks, dan proyeksi atribut.
-
Jalankan metode
CreateTable
dengan menentukan objek permintaan sebagai parameter.
Contoh kode #C berikut mendemonstrasikan langkah sebelumnya. Kode ini membuat tabel (Music
) dengan indeks sekunder pada atribut AlbumTitle
. Kunci urutan dan kunci partisi tabel, ditambah kunci urutan indeks, adalah satu-satunya atribut yang diproyeksikan ke dalam indeks.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "Music"; CreateTableRequest createTableRequest = new CreateTableRequest() { TableName = tableName }; //ProvisionedThroughput createTableRequest.ProvisionedThroughput = new ProvisionedThroughput() { ReadCapacityUnits = (long)5, WriteCapacityUnits = (long)5 }; //AttributeDefinitions List<AttributeDefinition> attributeDefinitions = new List<AttributeDefinition>(); attributeDefinitions.Add(new AttributeDefinition() { AttributeName = "Artist", AttributeType = "S" }); attributeDefinitions.Add(new AttributeDefinition() { AttributeName = "SongTitle", AttributeType = "S" }); attributeDefinitions.Add(new AttributeDefinition() { AttributeName = "AlbumTitle", AttributeType = "S" }); createTableRequest.AttributeDefinitions = attributeDefinitions; //KeySchema List<KeySchemaElement> tableKeySchema = new List<KeySchemaElement>(); tableKeySchema.Add(new KeySchemaElement() { AttributeName = "Artist", KeyType = "HASH" }); //Partition key tableKeySchema.Add(new KeySchemaElement() { AttributeName = "SongTitle", KeyType = "RANGE" }); //Sort key createTableRequest.KeySchema = tableKeySchema; List<KeySchemaElement> indexKeySchema = new List<KeySchemaElement>(); indexKeySchema.Add(new KeySchemaElement() { AttributeName = "Artist", KeyType = "HASH" }); //Partition key indexKeySchema.Add(new KeySchemaElement() { AttributeName = "AlbumTitle", KeyType = "RANGE" }); //Sort key Projection projection = new Projection() { ProjectionType = "INCLUDE" }; List<string> nonKeyAttributes = new List<string>(); nonKeyAttributes.Add("Genre"); nonKeyAttributes.Add("Year"); projection.NonKeyAttributes = nonKeyAttributes; LocalSecondaryIndex localSecondaryIndex = new LocalSecondaryIndex() { IndexName = "AlbumTitleIndex", KeySchema = indexKeySchema, Projection = projection }; List<LocalSecondaryIndex> localSecondaryIndexes = new List<LocalSecondaryIndex>(); localSecondaryIndexes.Add(localSecondaryIndex); createTableRequest.LocalSecondaryIndexes = localSecondaryIndexes; CreateTableResponse result = client.CreateTable(createTableRequest); Console.WriteLine(result.CreateTableResult.TableDescription.TableName); Console.WriteLine(result.CreateTableResult.TableDescription.TableStatus);
Anda harus menunggu hingga DynamoDB membuat tabel dan menetapkan status tabel menjadi ACTIVE
. Setelah itu, Anda bisa mulai memasukkan item data ke dalam tabel.
Mendeskripsikan tabel dengan Indeks Sekunder Lokal
Untuk mendapatkan informasi tentang indeks sekunder lokal pada tabel, gunakan API DescribeTable
. Untuk setiap indeks, Anda dapat mengakses namanya, skema kunci, dan atribut yang diproyeksikan.
Berikut ini adalah langkah-langkah untuk mengakses informasi indeks sekunder lokal suatu tabel menggunakan API tingkat rendah .NET.
-
Buat instans kelas
AmazonDynamoDBClient
. -
Buat instans kelas
DescribeTableRequest
untuk memberikan informasi permintaan. Anda harus memberikan nama tabel. -
Jalankan metode
describeTable
dengan menentukan objek permintaan sebagai parameter.
Contoh kode #C berikut mendemonstrasikan langkah sebelumnya.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "Music"; DescribeTableResponse response = client.DescribeTable(new DescribeTableRequest() { TableName = tableName }); List<LocalSecondaryIndexDescription> localSecondaryIndexes = response.DescribeTableResult.Table.LocalSecondaryIndexes; // This code snippet will work for multiple indexes, even though // there is only one index in this example. foreach (LocalSecondaryIndexDescription lsiDescription in localSecondaryIndexes) { Console.WriteLine("Info for index " + lsiDescription.IndexName + ":"); foreach (KeySchemaElement kse in lsiDescription.KeySchema) { Console.WriteLine("\t" + kse.AttributeName + ": key type is " + kse.KeyType); } Projection projection = lsiDescription.Projection; Console.WriteLine("\tThe projection type is: " + projection.ProjectionType); if (projection.ProjectionType.ToString().Equals("INCLUDE")) { Console.WriteLine("\t\tThe non-key projected attributes are:"); foreach (String s in projection.NonKeyAttributes) { Console.WriteLine("\t\t" + s); } } }
Mengkueri Indeks Sekunder Lokal
Anda dapat menggunakan Query
pada indeks sekunder lokal, sama seperti Anda Query
tabel. Anda harus menentukan nama indeks, kriteria kueri untuk kunci urutan indeks, dan atribut yang ingin Anda kembalikan. Dalam contoh ini, indeksnya adalah AlbumTitleIndex
, dan kunci urutan indeksnya adalah AlbumTitle
.
Satu-satunya atribut yang dikembalikan adalah atribut yang telah diproyeksikan ke dalam indeks. Anda dapat memodifikasi kueri ini untuk memilih atribut non-kunci juga, tetapi ini akan memerlukan aktivitas pengambilan tabel yang relatif mahal. Untuk informasi selengkapnya tentang pengambilan tabel, lihat Proyeksi atribut
Berikut ini adalah langkah-langkah untuk mengkueri indeks sekunder lokal menggunakan API tingkat rendah .NET.
-
Buat instans kelas
AmazonDynamoDBClient
. -
Buat instans kelas
QueryRequest
untuk memberikan informasi permintaan. -
Jalankan metode
query
dengan menentukan objek permintaan sebagai parameter.
Contoh kode #C berikut mendemonstrasikan langkah sebelumnya.
contoh
QueryRequest queryRequest = new QueryRequest { TableName = "Music", IndexName = "AlbumTitleIndex", Select = "ALL_ATTRIBUTES", ScanIndexForward = true, KeyConditionExpression = "Artist = :v_artist and AlbumTitle = :v_title", ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":v_artist",new AttributeValue {S = "Acme Band"}}, {":v_title",new AttributeValue {S = "Songs About Life"}} }, }; QueryResponse response = client.Query(queryRequest); foreach (var attribs in response.Items) { foreach (var attrib in attribs) { Console.WriteLine(attrib.Key + " ---> " + attrib.Value.S); } Console.WriteLine(); }