

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

# Operazioni di base sulle tabelle DynamoDB
<a name="WorkingWithTables.Basics"></a>

Analogamente ad altri sistemi di database, Amazon DynamoDB archivia i dati in tabelle. Puoi gestire le tabelle utilizzando alcune operazioni di base.

**Topics**
+ [Creazione di una tabella](#WorkingWithTables.Basics.CreateTable)
+ [Descrizione di una tabella](#WorkingWithTables.Basics.DescribeTable)
+ [Aggiornamento di una tabella](#WorkingWithTables.Basics.UpdateTable)
+ [Eliminazione di una tabella](#WorkingWithTables.Basics.DeleteTable)
+ [Uso della protezione da eliminazione](#WorkingWithTables.Basics.DeletionProtection)
+ [Elenco dei nomi delle tabelle](#WorkingWithTables.Basics.ListTables)
+ [Descrizione delle quote di velocità di trasmissione effettiva assegnate](#WorkingWithTables.Basics.DescribeLimits)

## Creazione di una tabella
<a name="WorkingWithTables.Basics.CreateTable"></a>

Utilizza l'operazione `CreateTable` per creare una tabella in Amazon DynamoDB. Per creare la tabella, è necessario fornire le informazioni riportate di seguito:
+ **Nome tabella.** Il nome deve essere conforme alle regole di denominazione di DynamoDB e deve essere univoco per l'account corrente e la regione. AWS Ad esempio, è possibile creare una tabella `People` nella regione Stati Uniti orientali (Virginia settentrionale) e un'altra tabella `People` in Europa (Irlanda). Tuttavia, queste due tabelle sarebbero totalmente diverse l'una dall'altra. Per ulteriori informazioni, consulta [Tipi di dati e regole di denominazione supportati in Amazon DynamoDB](HowItWorks.NamingRulesDataTypes.md).
+ **Chiave primaria.** La chiave primaria può consistere di un attributo (chiave di partizione) o due attributi (chiave di partizione e chiave di ordinamento). Devi fornire i nomi e i tipi di dati degli attributi e il ruolo di ciascun attributo: `HASH` (per una chiave di partizione) e `RANGE` (per una chiave di ordinamento). Per ulteriori informazioni, consulta [Chiave primaria](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey).
+ **Impostazioni di throughput (per tabelle assegnate).** Se utilizzi la modalità assegnata, devi specificare le impostazioni iniziali di throughput di lettura e scrittura per la tabella. Queste impostazioni possono essere modificate successivamente oppure è possibile abilitare la scalabilità automatica di DynamoDB perché le impostazioni vengano gestite automaticamente. Per ulteriori informazioni, consultare [Modalità con capacità allocata di DynamoDB](provisioned-capacity-mode.md) e [Gestione automatica della capacità effettiva di trasmissione con il dimensionamento automatico di DynamoDB](AutoScaling.md).

### Esempio 1: creare una tabella su richiesta
<a name="create-payperrequest-example"></a>

Per creare la stessa tabella `Music` utilizzando la modalità on demand:

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --billing-mode=PAY_PER_REQUEST
```

L'operazione `CreateTable` restituisce i metadati per la tabella, come illustrato di seguito:

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 0,
            "ReadCapacityUnits": 0
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "BillingModeSummary": {
            "BillingMode": "PAY_PER_REQUEST"
        },
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397468.348
    }
}
```

**Importante**  
 Quando si richiama `DescribeTable` su una tabella on demand, le unità di capacità in lettura e le unità di capacità in scrittura sono impostate su 0. 

### Esempio 2: creazione di una tabella predisposta
<a name="create-provisioned-example"></a>

L' AWS CLI esempio seguente mostra come creare una tabella (`Music`). La chiave primaria è costituita da `Artist` (chiave di partizione) e `SongTitle` (chiave di ordinamento), entrambe con tipo di dati `String`. Il throughput massimo per questa tabella è 10 unità di capacità di lettura e 5 unità di capacità di scrittura.

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
```

L'operazione `CreateTable` restituisce i metadati per la tabella, come illustrato di seguito:

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 5,
            "ReadCapacityUnits": 10
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397215.37
    }
}
```

L'elemento `TableStatus` indica lo stato corrente della tabella (`CREATING`). La creazione della tabella potrebbe richiedere del tempo, in base ai valori specificati per `ReadCapacityUnits` e `WriteCapacityUnits`. Valori maggiori richiedono l'allocazione di più risorse per la tabella da parte di DynamoDB.

### Esempio 3: creazione di una tabella utilizzando la classe di tabella DynamoDB Standard (accesso infrequente)
<a name="create-infrequent-access-example"></a>

Crea la stessa tabella `Music` utilizzando la classe di tabella DynamoDB Standard (accesso infrequente).

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --table-class STANDARD_INFREQUENT_ACCESS
```

L'operazione `CreateTable` restituisce i metadati per la tabella, come illustrato di seguito:

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 5,
            "ReadCapacityUnits": 10
        },
        "TableClassSummary": {
            "LastUpdateDateTime": 1542397215.37,
            "TableClass": "STANDARD_INFREQUENT_ACCESS"
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397215.37
    }
}
```

## Descrizione di una tabella
<a name="WorkingWithTables.Basics.DescribeTable"></a>

Per visualizzare i dettagli su una tabella, utilizza l'operazione `DescribeTable`. Devi specificare il nome della tabella. Il formato dell'output da `DescribeTable` è identico a quello da `CreateTable`. Include il timestamp di creazione della tabella, lo schema delle chiavi, le impostazioni della velocità effettiva assegnata, le dimensioni stimate e gli eventuali indici secondari presenti.

**Importante**  
 Quando si richiama `DescribeTable` su una tabella on demand, le unità di capacità in lettura e le unità di capacità in scrittura sono impostate su 0. 

**Example**  

```
aws dynamodb describe-table --table-name Music
```

La tabella è pronta per l'uso quando `TableStatus` cambia da `CREATING` ad `ACTIVE`.

**Nota**  
Se si emette una richiesta `DescribeTable` subito dopo una richiesta `CreateTable`, DynamoDB potrebbe restituire un errore (`ResourceNotFoundException`). Questo accade perché `DescribeTable` utilizza una query consistente finale e i metadata della tabella potrebbero non essere disponibili in quel momento. Attendi qualche secondo e prova nuovamente la richiesta `DescribeTable`.  
A scopo di fatturazione, i costi di archiviazione di DynamoDB includono un costo per elemento di 100 byte. Per ulteriori informazioni, consulta [Prezzi di DynamoDB](https://aws.amazon.com/dynamodb/pricing/). Questi 100 byte extra per elemento non sono utilizzati nei calcoli delle unità di capacità o dall'operazione `DescribeTable`. 

## Aggiornamento di una tabella
<a name="WorkingWithTables.Basics.UpdateTable"></a>

L'operazione `UpdateTable` consente di effettuare una delle operazioni seguenti:
+ Modificare le impostazioni di throughput assegnate di una tabella (per tabelle con modalità assegnata).
+ Cambia la modalità di read/write capacità della tabella.
+ Utilizza gli indici secondari globali nella tabella (consulta [Utilizzo degli indici secondari globali in DynamoDB](GSI.md)).
+ Abilitare o disabilitare DynamoDB Streams sulla tabella (vedere [Acquisizione dei dati di modifica per DynamoDB Streams](Streams.md)).

**Example**  
L' AWS CLI esempio seguente mostra come modificare le impostazioni di throughput assegnate a una tabella.  

```
aws dynamodb update-table --table-name Music \
    --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
```

**Nota**  
Quando emetti una richiesta `UpdateTable`, lo stato della tabella cambia da `AVAILABLE` a `UPDATING`. La tabella rimane completamente disponibile mentre lo stato è `UPDATING`. Al termine del processo, lo stato cambia da `UPDATING` ad `AVAILABLE`.

**Example**  
L' AWS CLI esempio seguente mostra come modificare la modalità di read/write capacità di una tabella in modalità on-demand.  

```
aws dynamodb update-table --table-name Music \
    --billing-mode PAY_PER_REQUEST
```

## Eliminazione di una tabella
<a name="WorkingWithTables.Basics.DeleteTable"></a>

Puoi rimuovere una tabella inutilizzata con l'operazione `DeleteTable`. L'operazione di eliminazione di una tabella è irreversibile. Per eliminare una tabella utilizzando la Console di gestione AWS, consulta [Fase 6: (facoltativo) eliminare la tabella DynamoDB per eseguire la pulizia delle risorse](getting-started-step-6.md).

**Example**  
L' AWS CLI esempio seguente mostra come eliminare una tabella.  

```
aws dynamodb delete-table --table-name Music
```

Quando emetti una richiesta `DeleteTable`, lo stato della tabella cambia da `ACTIVE` a `DELETING`. L'eliminazione della tabella può richiedere del tempo, in base alle risorse che utilizza (come i dati archiviati e i flussi o gli indici presenti).

A conclusione dell'operazione `DeleteTable`, la tabella sarà più presente in DynamoDB.

## Uso della protezione da eliminazione
<a name="WorkingWithTables.Basics.DeletionProtection"></a>

È possibile proteggere una tabella dall'eliminazione accidentale con la proprietà di protezione da eliminazione. L'attivazione di questa proprietà per una tabella aiuta a garantire che non venga eliminata accidentalmente durante le normali operazioni di gestione delle tabelle degli amministratori. In tal modo si contribuisce anche a prevenire le interruzioni delle normali operazioni aziendali.

 Il proprietario della tabella o un amministratore autorizzato controlla la proprietà di protezione da eliminazione per ogni tabella che per impostazione predefinita è disattivata per tutte le tabelle, incluse le repliche globali e le tabelle ripristinate dai backup. Quando la protezione da eliminazione è disabilitata, la tabella può essere eliminata da qualsiasi utente autorizzato da una policy Identity and Access Management (IAM). Quando la protezione da eliminazione è abilitata, nessuno può eliminare la tabella. 

Per modificare questa impostazione, vai alle **Impostazioni aggiuntive** della tabella, apri il pannello **Protezione da eliminazione** e seleziona **Abilita la protezione da eliminazione**. 

La proprietà di protezione da eliminazione è supportata dalla console DynamoDB, dall'API, dalla CLI, dall'SDK e da CloudFormation. L'API `CreateTable` supporta la proprietà di protezione da eliminazione al momento della creazione della tabella e l'API `UpdateTable` supporta la modifica della proprietà di protezione da eliminazione per le tabelle esistenti.

**Nota**  
Se un AWS account viene eliminato, tutti i dati dell'account, incluse le tabelle, vengono comunque eliminati entro 90 giorni.
Se DynamoDB perde l'accesso a una chiave gestita dal cliente utilizzata per crittografare una tabella, archivia comunque la tabella. L'archiviazione comporta l'esecuzione di un backup della tabella e l'eliminazione dell'originale.

## Elenco dei nomi delle tabelle
<a name="WorkingWithTables.Basics.ListTables"></a>

L'`ListTables`operazione restituisce i nomi delle tabelle DynamoDB per l'account AWS corrente e la regione.

**Example**  
L' AWS CLI esempio seguente mostra come elencare i nomi delle tabelle DynamoDB.  

```
aws dynamodb list-tables
```

## Descrizione delle quote di velocità di trasmissione effettiva assegnate
<a name="WorkingWithTables.Basics.DescribeLimits"></a>

L'`DescribeLimits`operazione restituisce le quote di capacità di lettura e scrittura correnti per l' AWS account corrente e la regione.

**Example**  
L' AWS CLI esempio seguente mostra come descrivere le quote di throughput attualmente assegnate.  

```
aws dynamodb describe-limits
```
L'output mostra le quote superiori di unità di capacità di lettura e scrittura per il conto corrente AWS e la regione.

Per ulteriori informazioni sulle quote e su come richiedere un aumento delle quote, consulta [Quote predefinite della velocità di trasmissione effettiva](ServiceQuotas.md#default-limits-throughput).