Bruk av AWS DynamoDB i en Node.js-applikasjon

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 søke 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-API-er i Node.js, og du står fritt til å velge databasen for API-en din når du arbeider med noen av 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 klient-aws-sdk-pakken for den tjenesten. For å få tilgang til DynamoDB, må du for eksempel installere klient-dynamodb-pakken under aws-sdk.

  14 beste gratis Gmail-alternativer

Kjør denne kommandoen i prosjektkatalogen for å installere pakken:

 npm install @aws-sdk/client-dynamodb

Etter å ha installert 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, oppretter du en ny fil og gir den navnet 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"

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.

Den nyopprettede klienten 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();

Feltet AttributeDefinitions er der du definerer tabellens nøkkelattributter og deres typer. E-postattributtet her har type S som betyr at feltet forventer en streng som verdi. De tre tilgjengelige attributttypene er S, N og B (streng, tall og binær).

  Alt du trenger å vite om å overklokke en Raspberry Pi 400

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 KeyType (HASH).

Den andre tilgjengelige KeyType-verdien er RANGE som brukes til sorteringsnøkler. Sorteringsnøkler er nyttige i tilfeller der du kan ha data med samme HASH-nøkler i en tabell, og du ønsker å gruppere dem i henhold til noen ekstra data som dato eller farge, kan du gjøre de ekstra dataene til en 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-tabelloversikten i nettkonsollen, vil du se tabellen enten fortsatt klargjort eller med statusen aktiv allerede.

Vurder alltid applikasjonsbehovene dine når du spesifiserer ReadCapacityUnits og WriteCapacityUnits 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 kundetabellen.

  • Legg til data i tabellen. For å skrive data til en tabell trenger du klientens putItem-metode. Koden nedenfor legger til en ny kunde i kundetabellen i DynamoDB.
     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)

    Params-objektet inneholder TableName som er tabellen du skriver til, og Item-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:

      Fix Sea of ​​Thieves Services er midlertidig utilgjengelig Lavendelskjegg
  • Les data fra tabellen. DynamoDB lar deg lese data på ulike måter. SDK-ens skannefunksjon leser hele tabellen, mens getItem kun leser spesifikke data. For eksempel får koden nedenfor alle kunder:
     const getAllCustomers = async () => {
        const params = {
            TableName: "Customer"
        }

        const customers = await client.scan(params)
        console.log(customers)
    }

    Mens følgende kode henter brukeren etter e-postverdien:

     const getCustomerByEmail = async (email) => {
        const params = {
            TableName: "Customer",
            Key: {
                Email: { "S": email }
            }
        }

        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-ens updateItem-funksjon. Følgende kode viser hvordan du oppdaterer en spesifikk post:
      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)
     }

    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.

  • Slett data fra tabellen. For å slette en post fra DynamoDB trenger du deleteItem-funksjonen 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.