Crea questa app di esempio per scoprire quanto possono essere semplici i database.
Punti chiave
- DynamoDB è un potente database NoSQL offerto da AWS in grado di gestire grandi quantità di dati diversi senza compromettere prestazioni, durabilità o affidabilità.
- Per iniziare con DynamoDB in Node.js, devi installare il pacchetto client-dynamodb da aws-sdk e configurare le tue credenziali.
- DynamoDB ti consente di creare facilmente tabelle, scrivere e leggere dati, aggiornare ed eliminare record utilizzando i metodi e i parametri del client. Offre flessibilità e scalabilità per uno sviluppo efficiente delle applicazioni.
Gran parte dello sviluppo di app moderne necessita di un mix di linguaggi di programmazione robusti e database potenti.
Una delle soluzioni offerte da Amazon Web Services (AWS) è DynamoDB, uno strumento che può rivoluzionare la gestione dei dati. Usandolo, puoi fornire rapidamente un database per gestire grandi quantità di dati diversi.
Cos'è DynamoDB?
AWS offre servizi per diverse esigenze di database, come
Amazon RDS per database relazionalie DocumentDB per database di documenti come MongoDB. DynamoDB è un database NoSQL per l'archiviazione dei dati in un formato chiave-valore.DynamoDB può gestire grandi quantità di dati nell'infrastruttura distribuita senza compromettere prestazioni, durabilità o affidabilità. Offre un modello flessibile che ti consente di archiviare ed eseguire query facilmente sui dati, siano essi strutturati o non strutturati.
Puoi utilizzare DynamoDB come database per vari tipi di applicazioni. Puoi accedervi direttamente dalla console Web AWS e in modo programmatico tramite AWS-CLI o da applicazioni Web utilizzando AWS-SDK.
Iniziare con DynamoDB in Node.js
Ci sono molti strumenti per creare API di backend in Node.js e sei libero di scegliere il database per la tua API quando lavori con uno di questi strumenti. Node.js fornisce ampio supporto per servizi esterni inclusi database come AWS DynamoDB.
Tutto ciò che ti serve per accedere a un servizio AWS dalla tua app Node è il client aws-sdk pacchetto per quel servizio. Ad esempio, per accedere a DynamoDB, è necessario installare il file client-dynamodb pacchetto sotto aws-sdk.
Esegui questo comando nella directory del tuo progetto per installare il pacchetto:
npm install @aws-sdk/client-dynamodb
Dopo l'installazione aws-sdk/client-dynamodb nel tuo progetto Node.js, devi aggiungere la regione della tabella DynamoDB alla configurazione prima di interagire con essa. Lo farai durante l'inizializzazione del client DynamoDB.
Se hai già installato e utilizzato AWS-CLI sul tuo computer, probabilmente hai già impostato le credenziali AWS nel tuo ambiente e l'SDK otterrà automaticamente i tuoi valori dall'ambiente.
Ma se non l'hai fatto, puoi andare al AWS Identity Access Management (IAM) servizio nella tua console e crea un nuovo utente. Dopo aver creato l'utente, puoi ottenere un ID chiave di accesso e una chiave segreta, che rappresentano le tue credenziali personali.
Aggiungi queste credenziali al tuo ambiente eseguendo i seguenti comandi del terminale per la tua piattaforma:
Su Unix, Linux o macOS:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
Su Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
Su Windows (PowerShell):
$env: AWS_ACCESS_KEY_ID='your access key ID'
$env: AWS_SECRET_ACCESS_KEY='you secret access key'
Quindi, torna nel tuo progetto Node.js, crea un nuovo file e assegnagli un nome dynamodb.js. In questo file, crea un'istanza di un nuovo client AWS DynamoDB utilizzando il codice seguente:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')
const region = "us-east-1"// your preferred region
const client = new DynamoDB({ region })
Abbastanza semplice! AWS si assicura che tu non esponga nessuna delle tue credenziali di sicurezza nel tuo codice, quindi mentre il codice sopra tenta di creare il client, legge prima la chiave di accesso e la chiave segreta dal tuo ambiente.
Il appena creato cliente consente di eseguire varie operazioni, come la creazione di tabelle e la lettura e scrittura di dati.
DynamoDB è senza schema proprio come gli altri database NoSQL, quindi puoi sempre aggiungere nuovi attributi (campi) a una tabella in qualsiasi momento. Questo è il motivo per cui devi solo aggiungere attributi che fungeranno da chiavi primarie a una tabella DynamoDB durante la sua creazione.
Controlla il seguente codice che crea una nuova tabella (Cliente) in DynamoDB:
const createCustomerTable = async () => {
const params = {
TableName: "Customer",
AttributeDefinitions: [
{
AttributeName: "Email",
AttributeType: "S"
},
],
KeySchema: [
{
AttributeName: "Email",
KeyType: "HASH"
}
],
ProvisionedThroughput: {
ReadCapacityUnits: 5,
WriteCapacityUnits: 5
}
};client.createTable(params, (err, data) => {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
}
createCustomerTable();
IL Definizioni degli attributi Il campo è dove definisci gli attributi chiave della tabella e i loro tipi. IL E-mail l'attributo qui ha tipo S il che significa che il campo si aspetta a Corda come il suo valore. I tre tipi di attributi disponibili sono S, N, E B (Stringa, numero e binario).
Hai bisogno di Schema chiave per definire le chiavi primarie che aiutano a trovare e organizzare rapidamente gli elementi. DynamoDB prevede che gli attributi aggiunti durante la creazione della tabella siano attributi chiave, quindi Email è la chiave primaria qui. È necessario aggiungerlo a KeySchema e specificarlo Tipo chiave (HASH).
L'altro valore KeyType disponibile è ALLINEARE che viene utilizzato per le chiavi di ordinamento. Le chiavi di ordinamento sono utili nei casi in cui potresti avere dati con le stesse chiavi HASH in una tabella e lo desideri per raggrupparli in base ad alcuni dati extra come data o colore, puoi rendere i dati extra un RANGE chiave.
Il terzo parametro importante nel codice precedente è the Provisioning Throughput. Qui è dove definisci il numero di letture e scritture che vuoi che DynamoDb consenta sulla tabella al secondo.
Quando esegui il codice sopra, dovresti ottenere un output simile al seguente:
Se controlli il dashboard delle tabelle DynamoDB nella console web, vedrai la tabella ancora in fase di provisioning o con uno stato di attivo Già.
Considera sempre le esigenze della tua applicazione quando specifichi il file Leggi Unità di capacità E WriteCapacityUnits perché un valore inappropriato può portare a problemi di rendimento o a costi di fatturazione elevati sul tuo account.
Una volta che sei sicuro che la tabella sia già attiva, puoi eseguire operazioni CRUD su di essa.
Di seguito sono riportati alcuni esempi di codice che mostrano come scrivere e leggere i dati dal file Cliente tavolo.
-
Aggiungi dati alla tabella. Per scrivere dati su una tabella, è necessario quello del client putItem metodo. Il codice seguente aggiunge un nuovo cliente al Cliente tabella in DynamoDB.
IL parametri l'oggetto contiene il NomeTabella che è la tabella su cui stai scrivendo e il Articolo campo che contiene i dati che stai aggiungendo con i loro tipi specifici. Nota i nuovi campi che inizialmente non erano nella tabella, ecco come DynamoDB funziona in modo flessibile. Puoi visualizzare i dati nel tuo database nella tua console in questo modo:const createCustomer = async (customer) => {
const params = {
TableName: "Customer",
Item: customer
}client.putItem(params, (err, data) => {
if (err) {
console.error(err)
} else {
console.log(data)
}
})
}const customerData = {
Name: { "S": "Timilehin O." },
Email: { "S": "[email protected]" },
Age: { "N": "18"},
Country: { "S": "Nigeria" }
}createCustomer(customerData)
-
Leggere i dati dalla tabella. DynamoDB ti consente di leggere i dati in vari modi. Gli SDK scansione la funzione legge l'intera tabella, mentre getItem legge solo dati specifici. Ad esempio, il codice seguente ottiene tutti i clienti:
Mentre il codice seguente ottiene l'utente in base al valore dell'e-mail:const getAllCustomers = async () => {
const params = {
TableName: "Customer"
}const customers = await client.scan(params)
console.log(customers)
}const getCustomerByEmail = async (email) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email } // the type is always required
}
}const customer = await client.getItem(params)
console.log(customer)
}getCustomerByEmail("[email protected]")
-
Aggiorna i dati nella tabella. Per aggiornare i dati esistenti in una tabella, utilizza gli SDK updateItem funzione. Il codice seguente illustra come aggiornare un record specifico:
Puoi anche scegliere di rendere dinamica la tua funzione creando espressioni di aggiornamento dai dati di aggiornamento. La flessibilità di DynamoDB ti consente di gestire ogni operazione in base alle tue esigenze.const updateCustomerLocation = async (email, age) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
},
UpdateExpression: "SET Age = :newAge",
ExpressionAttributeValues: {
':newAge': { "N": age }
},
ReturnValues: "ALL_NEW"
}const updatedCustomer = await client.updateItem(params)
console.log(updatedCustomer.Attributes)
} -
Elimina i dati dalla tabella. Per eliminare un record da DynamoDB, è necessario il file cancella oggetto funzione e la chiave del record specifico. Ecco come implementarlo:
const deleteCustomer = async (email) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
}
}client.deleteItem(params, (err, data) => {
if (err) {
console.error(err)
} else {
console.log("Customer deleted successfully")
}
})
}deleteCustomer("[email protected]")
Creazione di applicazioni efficienti con DynamoDB
Amazon Web Services continua a prosperare. Fornisce una piattaforma accessibile che puoi utilizzare per fornire soluzioni digitali efficienti e sicure. DynamoDB è la scelta perfetta se stai cercando un database da utilizzare senza preoccuparti dell'infrastruttura o della sicurezza.
Ora hai tutto ciò di cui hai bisogno per iniziare con DynamoDB in Node.js e puoi scegliere con sicurezza DynamoDB per la tua prossima applicazione Node.js.