

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

# Differenze tra un database relazionale (SQL) e DynamoDB durante la scrittura di dati in una tabella
<a name="SQLtoNoSQL.WriteData"></a>

Le tabelle dei database relazionali contengono *righe* di dati. Le righe sono costituiti da*columns*. Le tabelle Amazon DynamoDB contengono*ELEMENTO*. gli elementi sono costituiti da *attributi*.

In questa sezione viene descritto come scrivere una riga o un item in una tabella.

**Topics**
+ [Scrittura dei dati in una tabella con SQL](#SQLtoNoSQL.WriteData.SQL)
+ [Scrittura dei dati in una tabella in DynamoDB](#SQLtoNoSQL.WriteData.DynamoDB)

## Scrittura dei dati in una tabella con SQL
<a name="SQLtoNoSQL.WriteData.SQL"></a>

Una tabella in un database relazionale è una struttura di dati bidimensionale composta da righe e colonne. Alcuni sistemi di gestione di database forniscono anche il supporto per dati semi-strutturati, solitamente con tipi di dati JSON o XML nativi. Tuttavia, i dettagli di implementazione variano tra i fornitori.

In SQL, userai l'istruzione `INSERT` per aggiungere una riga a una tabella.

```
INSERT INTO Music
    (Artist, SongTitle, AlbumTitle,
    Year, Price, Genre,
    Tags)
VALUES(
    'No One You Know', 'Call Me Today', 'Somewhat Famous',
    2015, 2.14, 'Country',
    '{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
```

La chiave principale di questa tabella è costituita da *Artist* e. *SongTitle* Dovrai specificare i valori per queste colonne.

**Nota**  
Questo esempio utilizza la colonna *Tags* per memorizzare dati semistrutturati sulle canzoni nella tabella *Music*. La colonna *Tags* è definita come di tipo TEXT e pertanto può memorizzare fino a 65.535 caratteri in MySQL. 

## Scrittura dei dati in una tabella in DynamoDB
<a name="SQLtoNoSQL.WriteData.DynamoDB"></a>

In Amazon DynamoDB, puoi utilizzare l’API DynamoDB, o [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html), un linguaggio di query compatibile con SQL, per aggiungere un elemento a una tabella.

------
#### [ DynamoDB API ]

Con l'API DynamoDB, si utilizza l’operazione `PutItem` per aggiungere un elemento a una tabella.

```
{
    TableName: "Music",
    Item: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today",
        "AlbumTitle":"Somewhat Famous",
        "Year": 2015,
        "Price": 2.14,
        "Genre": "Country",
        "Tags": {
            "Composers": [
                  "Smith",
                  "Jones",
                  "Davis"
            ],
            "LengthInSeconds": 214
        }
    }
}
```

La chiave principale di questa tabella è costituita da *Artist* e. *SongTitle* Dovrai specificare i valori per questi attributi.

Ecco alcune cose fondamentali da sapere su questo `PutItem` di esempio:
+ DynamoDB fornisce il supporto nativo per i documenti utilizzando JSON. Questo rende DynamoDB ideale per l'archiviazione dei dati semistrutturati, ad esempio *Tag*. Puoi anche recuperare e modificare i dati dai documenti JSON.
+ La tabella *Music* non ha attributi predefiniti, tranne la chiave primaria (*Artista* e *SongTitle*).
+ La maggior parte dei database SQL è basata sulle transazioni. Quanto emetti un'istruzione `INSERT`, le modifiche dei dati non sono permanenti fino a quando non emetti un'istruzione `COMMIT`. Con Amazon DynamoDB, gli effetti di un'operazione `PutItem` diventano permanenti quando DynamoDB risponde con un codice di stato HTTP 200 (`OK`).

Di seguito vengono riportati altri esempi di `PutItem`.

```
{
    TableName: "Music",
    Item: {
        "Artist": "No One You Know",
        "SongTitle": "My Dog Spot",
        "AlbumTitle":"Hey Now",
        "Price": 1.98,
        "Genre": "Country",
        "CriticRating": 8.4
    }
}
```

```
{
    TableName: "Music",
    Item: {
        "Artist": "No One You Know",
        "SongTitle": "Somewhere Down The Road",
        "AlbumTitle":"Somewhat Famous",
        "Genre": "Country",
        "CriticRating": 8.4,
        "Year": 1984
    }
}
```

```
{
    TableName: "Music",
    Item: {
        "Artist": "The Acme Band",
        "SongTitle": "Still In Love",
        "AlbumTitle":"The Buck Starts Here",
        "Price": 2.47,
        "Genre": "Rock",
        "PromotionInfo": {
            "RadioStationsPlaying":[
                 "KHCR", "KBQX", "WTNR", "WJJH"
            ],
            "TourDates": {
                "Seattle": "20150625",
                "Cleveland": "20150630"
            },
            "Rotation": "Heavy"
        }
    }
}
```

```
{
    TableName: "Music",
    Item: {
        "Artist": "The Acme Band",
        "SongTitle": "Look Out, World",
        "AlbumTitle":"The Buck Starts Here",
        "Price": 0.99,
        "Genre": "Rock"
    }
}
```

**Nota**  
Oltre a `PutItem`, DynamoDB supporta un'operazione `BatchWriteItem` per la scrittura di più elementi contemporaneamente.

------
#### [ PartiQL for DynamoDB ]

Con PartiQL, utilizzi l’operazione `ExecuteStatement` per aggiungere un elemento a una tabella, utilizzando la dichiarazione `Insert` PartiQL.

```
INSERT into Music value {  
    'Artist': 'No One You Know',
    'SongTitle': 'Call Me Today',
    'AlbumTitle': 'Somewhat Famous',
    'Year' : '2015',
    'Genre' : 'Acme'
}
```

La chiave primaria di questa tabella è composta da *Artist* e *SongTitle*. Dovrai specificare i valori per questi attributi.

**Nota**  
Per esempi di codice che utilizzano `Insert` e `ExecuteStatement`, consulta [Istruzioni INSERT PartiQL per DynamoDB](ql-reference.insert.md).

------