Bygg denne eksempelappen for å finne ut hvor enkle databaser kan være.
Viktige takeaways
- DynamoDB er en kraftig NoSQL-database som tilbys av AWS som kan håndtere store mengder forskjellige data uten å gå på akkord med ytelse, holdbarhet eller pålitelighet.
- For å komme i gang med DynamoDB i Node.js, må du installere klient-dynamodb-pakken fra aws-sdk og konfigurere legitimasjonen din.
- DynamoDB lar deg enkelt lage tabeller, skrive og lese data, oppdatere poster og slette poster ved å bruke klientens metoder og parametere. Det gir fleksibilitet og skalerbarhet for effektiv applikasjonsutvikling.
En stor del av moderne apputvikling trenger en blanding av robuste programmeringsspråk og kraftige databaser.
En av løsningene som Amazon Web Services (AWS) tilbyr er DynamoDB, et verktøy som kan revolusjonere databehandlingen din. Ved å bruke den kan du raskt klargjøre en database for å håndtere store mengder forskjellige data.
Hva er DynamoDB?
AWS tilbyr tjenester for ulike databasebehov, som Amazon RDS for relasjonsdatabaser
, og DocumentDB for dokumentdatabaser som MongoDB. DynamoDB er en NoSQL-database for lagring av data i et nøkkelverdi-format.DynamoDB kan håndtere store mengder data på tvers av distribuert infrastruktur uten at det går på bekostning av ytelse, holdbarhet eller pålitelighet. Den tilbyr en fleksibel modell som lar deg enkelt lagre og spørre etter data, enten de er strukturerte eller ustrukturerte.
Du kan bruke DynamoDB som database for ulike typer applikasjoner. Du kan få tilgang til den direkte fra AWS-nettkonsollen og programmatisk via AWS-CLI, eller fra nettapplikasjoner som bruker AWS-SDK.
Komme i gang med DynamoDB i Node.js
Det er mange verktøy for å bygge backend-APIer i Node.js og du står fritt til å velge databasen for API-en din når du arbeider med disse verktøyene. Node.js gir bred støtte for eksterne tjenester, inkludert databaser som AWS DynamoDB.
Alt du trenger for å få tilgang til en AWS-tjeneste fra Node-appen din er klienten aws-sdk pakken for den tjenesten. For å få tilgang til DynamoDB, må du for eksempel installere klient-dynamodb pakke under aws-sdk.
Kjør denne kommandoen i prosjektkatalogen for å installere pakken:
npm install @aws-sdk/client-dynamodb
Etter installasjon aws-sdk/client-dynamodb i Node.js-prosjektet ditt må du legge til regionen til DynamoDB-tabellen i konfigurasjonen før du samhandler med den. Du vil gjøre dette når du initialiserer DynamoDB-klienten.
Hvis du har installert og brukt AWS-CLI på datamaskinen din før, har du sannsynligvis allerede angitt AWS-legitimasjon i miljøet ditt, og SDK-en vil automatisk hente verdiene dine fra miljøet.
Men hvis du ikke har det, kan du gå til AWS Identity Access Management (IAM) tjeneste i konsollen og opprette en ny bruker. Etter å ha opprettet brukeren, kan du få en tilgangsnøkkel-ID og hemmelig nøkkel, som er din personlige legitimasjon.
Legg til denne legitimasjonen til miljøet ditt ved å kjøre følgende terminalkommandoer for plattformen din:
På Unix, Linux eller macOS:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
På Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
På Windows (PowerShell):
$env: AWS_ACCESS_KEY_ID='your access key ID'
$env: AWS_SECRET_ACCESS_KEY='you secret access key'
Deretter, tilbake i Node.js-prosjektet, opprett en ny fil og navngi den dynamodb.js. I denne filen instansierer du en ny AWS DynamoDB-klient ved å bruke følgende kode:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')
const region = "us-east-1"// your preferred region
const client = new DynamoDB({ region })
Ganske enkelt! AWS sørger for at du ikke avslører noen av sikkerhetslegitimasjonene dine i koden din, så mens koden ovenfor prøver å opprette klienten, leser den først tilgangsnøkkelen og den hemmelige nøkkelen fra miljøet ditt.
Det nyopprettede klient lar deg utføre ulike operasjoner, som å lage tabeller og lese og skrive data.
DynamoDB er uten skjema akkurat som andre NoSQL-databaser, så du kan alltid legge til nye attributter (felt) til en tabell når som helst. Dette er grunnen til at du bare trenger å legge til attributter som vil fungere som primærnøkler til en DynamoDB-tabell når du oppretter den.
Sjekk ut følgende kode som lager en ny tabell (Kunde) i 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();
De Attributtdefinisjoner feltet er der du definerer tabellens nøkkelattributter og deres typer. De E-post attributtet her har type S som betyr at feltet forventer en String som dens verdi. De tre tilgjengelige attributttypene er S, N, og B (streng, tall og binær).
Du trenger KeySchema for å definere primærnøkler som hjelper deg med å finne og organisere elementer raskt. DynamoDB forventer at attributtene du legger til når du oppretter tabellen er nøkkelattributter, så e-post er primærnøkkelen her. Du må legge det til KeySchema og spesifisere det KeyType (HASH).
Den andre tilgjengelige KeyType-verdien er OMRÅDE som brukes til sorteringsnøkler. Sorteringsnøkler er nyttige i tilfeller der du kanskje har data med samme HASH-nøkler i en tabell, og du ønsker det for å gruppere dem i henhold til noen ekstra data som dato eller farge, kan du gjøre de ekstra dataene til et RANGE nøkkel.
Den tredje viktige parameteren i koden ovenfor er ProvisionedThroughput. Det er her du definerer antall lesinger og skriv du vil at DynamoDb skal tillate på bordet per sekund.
Når du kjører koden ovenfor, bør du få utdata som ser slik ut:
Hvis du sjekker DynamoDB-tabeller-dashbordet i nettkonsollen, vil du se tabellen enten fortsatt klargjort eller med statusen aktiv allerede.
Vurder alltid søknadsbehovene dine når du spesifiserer ReadCapacity Units og WriteCapacity Units fordi en upassende verdi kan føre til ytelsesproblemer eller høye faktureringskostnader på kontoen din.
Når du er sikker på at bordet allerede er aktivt, kan du utføre CRUD-operasjoner på det.
Følgende er noen kodeeksempler som viser deg hvordan du skriver og leser data fra Kunde bord.
-
Legg til data i tabellen. For å skrive data til en tabell trenger du klientens putItem metode. Koden nedenfor legger til en ny kunde til Kunde tabell i DynamoDB.
De params objektet inneholder Tabellnavn som er tabellen du skriver til, og Punkt feltet som inneholder dataene du legger til med deres spesifikke typer. Legg merke til de nye feltene som ikke var i tabellen i utgangspunktet, dette er hvordan DynamoDB fungerer fleksibelt. Du kan se dataene i databasen din i konsollen din slik: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)
-
Les data fra tabellen. DynamoDB lar deg lese data på ulike måter. SDK-ene skanning funksjonen leser hele tabellen, mens getItem leser kun spesifikke data. For eksempel får koden nedenfor alle kunder:
Mens følgende kode henter brukeren etter e-postverdien: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]")
-
Oppdater data i tabellen. For å oppdatere eksisterende data i en tabell, bruk SDK-ene updateItem funksjon. Følgende kode viser hvordan du oppdaterer en spesifikk post:
Du kan også velge å gjøre funksjonen din dynamisk ved å bygge oppdateringsuttrykk fra oppdateringsdataene dine. DynamoDBs fleksibilitet lar deg håndtere hver operasjon i henhold til dine behov.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)
} -
Slett data fra tabellen. For å slette en post fra DynamoDB, trenger du deleteItem funksjon og nøkkelen til den aktuelle posten. Slik implementerer du det:
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]")
Bygge effektive applikasjoner med DynamoDB
Amazon Web Services fortsetter å trives. Det gir en tilgjengelig plattform du kan bruke til å levere effektive, sikre digitale løsninger. DynamoDB er det perfekte valget hvis du leter etter en database for å komme i gang uten å bekymre deg for infrastruktur eller sikkerhet.
Du er nå utstyrt med alt du trenger for å komme i gang med DynamoDB i Node.js, og du kan trygt velge DynamoDB for din neste Node.js-applikasjon.