Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Utilizzo di indici secondari globali: .NET

Modalità Focus
Utilizzo di indici secondari globali: .NET - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

È possibile utilizzare l'API di basso livello AWS SDK for .NET per creare una tabella Amazon DynamoDB con uno o più indici secondari globali, descrivere gli indici sulla tabella ed eseguire query utilizzando gli indici. Queste operazioni vengono mappate alle operazioni DynamoDB corrispondenti. Per ulteriori informazioni, consulta la Documentazione di riferimento delle API di Amazon DynamoDB.

Di seguito sono riportate le operazioni comuni per le operazioni delle tabelle che utilizzano l'API di basso livello .NET.

  1. Creare un'istanza della classe AmazonDynamoDBClient.

  2. Fornisci i parametri obbligatori e facoltativi per l'operazione creando gli oggetti di richiesta corrispondenti.

    Ad esempio, creare un oggetto CreateTableRequest per creare una tabella e un oggetto QueryRequest per eseguire una query su una tabella o un indice.

  3. Eseguire il metodo appropriato fornito dal client creato nella fase precedente.

Creazione di una tabella con un indice secondario globale

Puoi creare indici secondari globali al momento della creazione di una tabella. A tale scopo, utilizza CreateTable e fornisci le specifiche per uno o più indici secondari globali. Il seguente esempio di codice C# crea una tabella per contenere le informazioni sui dati meteo. La chiave di partizione è Location e la chiave di ordinamento è Date. Un indice secondario globale denominato PrecipIndex consente di accedere rapidamente ai dati delle precipitazioni di vari luoghi.

Di seguito sono riportate le fasi per creare una tabella con un indice secondario globale, utilizzando l'API di basso livello di DynamoDB.

  1. Creare un'istanza della classe AmazonDynamoDBClient.

  2. Crea un'istanza della classe CreateTableRequest per fornire le informazioni della richiesta.

    È necessario fornire il nome della tabella, la sua chiave primaria e i valori del throughput assegnato. Per l'indice secondario globale, è necessario fornire il nome dell'indice, le impostazioni di velocità effettiva assegnata, le definizioni degli attributi per la chiave di ordinamento dell'indice, lo schema della chiave per l'indice e la proiezione degli attributi.

  3. Eseguire il metodo CreateTable fornendo l'oggetto della richiesta come parametro.

Il seguente esempio di codice C# mostra le fasi precedenti. Il codice crea una tabella (WeatherData) con un indice secondario globale (PrecipIndex). La chiave di partizione dell'indice è Date e la sua chiave di ordinamento è Precipitation. Tutti gli attributi della tabella vengono proiettati nell'indice. Gli utenti possono eseguire query su questo indice per ottenere dati sul meteo di una data specifica, ordinando facoltativamente i dati per quantità di precipitazioni.

Poiché Precipitation non è un attributo chiave per la tabella, non è obbligatorio. Tuttavia, item WeatherData senza Precipitation non vengono visualizzati in PrecipIndex.

client = new AmazonDynamoDBClient(); string tableName = "WeatherData"; // Attribute definitions var attributeDefinitions = new List<AttributeDefinition>() { {new AttributeDefinition{ AttributeName = "Location", AttributeType = "S"}}, {new AttributeDefinition{ AttributeName = "Date", AttributeType = "S"}}, {new AttributeDefinition(){ AttributeName = "Precipitation", AttributeType = "N"} } }; // Table key schema var tableKeySchema = new List<KeySchemaElement>() { {new KeySchemaElement { AttributeName = "Location", KeyType = "HASH"}}, //Partition key {new KeySchemaElement { AttributeName = "Date", KeyType = "RANGE"} //Sort key } }; // PrecipIndex var precipIndex = new GlobalSecondaryIndex { IndexName = "PrecipIndex", ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = (long)10, WriteCapacityUnits = (long)1 }, Projection = new Projection { ProjectionType = "ALL" } }; var indexKeySchema = new List<KeySchemaElement> { {new KeySchemaElement { AttributeName = "Date", KeyType = "HASH"}}, //Partition key {new KeySchemaElement{AttributeName = "Precipitation",KeyType = "RANGE"}} //Sort key }; precipIndex.KeySchema = indexKeySchema; CreateTableRequest createTableRequest = new CreateTableRequest { TableName = tableName, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = (long)5, WriteCapacityUnits = (long)1 }, AttributeDefinitions = attributeDefinitions, KeySchema = tableKeySchema, GlobalSecondaryIndexes = { precipIndex } }; CreateTableResponse response = client.CreateTable(createTableRequest); Console.WriteLine(response.CreateTableResult.TableDescription.TableName); Console.WriteLine(response.CreateTableResult.TableDescription.TableStatus);

È necessario attendere fino a quando DynamoDB crea la tabella e imposta lo stato su ACTIVE. Dopodiché, puoi iniziare a inserire item di dati nella tabella.

Descrizione di una tabella con un indice secondario globale

Per ottenere informazioni sugli indici secondari globali in una tabella, utilizza DescribeTable. Puoi accedere al nome, allo schema della chiave e agli attributi proiettati di ciascun indice.

Di seguito sono riportate le fasi per accedere alle informazioni dell'indice secondario globale per una tabella utilizzando l'API di basso livello .NET.

  1. Creare un'istanza della classe AmazonDynamoDBClient.

  2. Eseguire il metodo describeTable fornendo l'oggetto della richiesta come parametro.

    Crea un'istanza della classe DescribeTableRequest per fornire le informazioni della richiesta. Devi specificare il nome della tabella.

Il seguente esempio di codice C# mostra le fasi precedenti.

Esempio
client = new AmazonDynamoDBClient(); string tableName = "WeatherData"; DescribeTableResponse response = client.DescribeTable(new DescribeTableRequest { TableName = tableName}); List<GlobalSecondaryIndexDescription> globalSecondaryIndexes = response.DescribeTableResult.Table.GlobalSecondaryIndexes; // This code snippet will work for multiple indexes, even though // there is only one index in this example. foreach (GlobalSecondaryIndexDescription gsiDescription in globalSecondaryIndexes) { Console.WriteLine("Info for index " + gsiDescription.IndexName + ":"); foreach (KeySchemaElement kse in gsiDescription.KeySchema) { Console.WriteLine("\t" + kse.AttributeName + ": key type is " + kse.KeyType); } Projection projection = gsiDescription.Projection; Console.WriteLine("\tThe projection type is: " + projection.ProjectionType); if (projection.ProjectionType.ToString().Equals("INCLUDE")) { Console.WriteLine("\t\tThe non-key projected attributes are: " + projection.NonKeyAttributes); } }

Esecuzione di query su un indice secondario globale

È possibile utilizzare l'operazione Query su un indice secondario globale quasi nello stesso modo in cui si esegue una Query su una tabella. È necessario specificare il nome dell'indice, i criteri di query per la chiave di partizione e di ordinamento dell'indice (se presente) e gli attributi da restituire. In questo esempio, l'indice è PrecipIndex, avente una chiave di partizione Date e una chiave di ordinamento Precipitation. La query di indice restituisce tutti i dati sul meteo di una data specifica in cui le precipitazioni sono maggiori di zero.

Di seguito sono riportate le fasi per eseguire una query su un indice secondario globale utilizzando l'API di basso livello .NET.

  1. Creare un'istanza della classe AmazonDynamoDBClient.

  2. Crea un'istanza della classe QueryRequest per fornire le informazioni della richiesta.

  3. Eseguire il metodo query fornendo l'oggetto della richiesta come parametro.

Il nome di attributo Date è una parola riservata in DynamoDB. Pertanto, devi utilizzare un nome di attributo di espressione come segnaposto in KeyConditionExpression.

Il seguente esempio di codice C# mostra le fasi precedenti.

Esempio
client = new AmazonDynamoDBClient(); QueryRequest queryRequest = new QueryRequest { TableName = "WeatherData", IndexName = "PrecipIndex", KeyConditionExpression = "#dt = :v_date and Precipitation > :v_precip", ExpressionAttributeNames = new Dictionary<String, String> { {"#dt", "Date"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue> { {":v_date", new AttributeValue { S = "2013-08-01" }}, {":v_precip", new AttributeValue { N = "0" }} }, ScanIndexForward = true }; var result = client.Query(queryRequest); var items = result.Items; foreach (var currentItem in items) { foreach (string attr in currentItem.Keys) { Console.Write(attr + "---> "); if (attr == "Precipitation") { Console.WriteLine(currentItem[attr].N); } else { Console.WriteLine(currentItem[attr].S); } } Console.WriteLine(); }
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.