Brug af AWS DynamoDB i en Node.js-applikation

Nøgle takeaways

  • DynamoDB er en kraftfuld NoSQL-database, der tilbydes af AWS, der kan håndtere store mængder forskellige data uden at gå på kompromis med ydeevne, holdbarhed eller pålidelighed.
  • For at komme i gang med DynamoDB i Node.js skal du installere client-dynamodb-pakken fra aws-sdk og konfigurere dine legitimationsoplysninger.
  • DynamoDB giver dig mulighed for nemt at oprette tabeller, skrive og læse data, opdatere poster og slette poster ved hjælp af klientens metoder og parametre. Det giver fleksibilitet og skalerbarhed til effektiv applikationsudvikling.

En stor del af moderne app-udvikling har brug for en blanding af robuste programmeringssprog og kraftfulde databaser.

En af de løsninger, som Amazon Web Services (AWS) tilbyder, er DynamoDB, et værktøj, der kan revolutionere din datahåndtering. Ved at bruge det kan du hurtigt klargøre en database til at håndtere store mængder forskellige data.

Hvad er DynamoDB?

AWS tilbyder tjenester til forskellige databasebehov, såsom Amazon RDS til relationelle databaser og DocumentDB til dokumentdatabaser som MongoDB. DynamoDB er en NoSQL-database til lagring af data i et nøgleværdi-format.

DynamoDB kan håndtere store mængder data på tværs af distribueret infrastruktur uden at gå på kompromis med ydeevne, holdbarhed eller pålidelighed. Den tilbyder en fleksibel model, så du nemt kan gemme og forespørge data, uanset om de er strukturerede eller ustrukturerede.

Du kan bruge DynamoDB som database til forskellige typer applikationer. Du kan få adgang til den direkte fra AWS-webkonsollen og programmatisk via AWS-CLI eller fra webapplikationer ved hjælp af AWS-SDK.

Kom godt i gang med DynamoDB i Node.js

Der er mange værktøjer til at bygge backend-API’er i Node.js, og du kan frit vælge databasen til din API, når du arbejder med nogen af ​​disse værktøjer. Node.js giver bred support til eksterne tjenester, herunder databaser som AWS DynamoDB.

Alt du behøver for at få adgang til en AWS-tjeneste fra din Node-app er klient-aws-sdk-pakken til den pågældende tjeneste. For at få adgang til DynamoDB skal du for eksempel installere klient-dynamodb-pakken under aws-sdk.

  Kend det grundlæggende i informationsarkitektur i design [+4 Tools]

Kør denne kommando i din projektmappe for at installere pakken:

 npm install @aws-sdk/client-dynamodb

Efter at have installeret aws-sdk/client-dynamodb i dit Node.js-projekt, skal du tilføje regionen i din DynamoDB-tabel til konfigurationen, før du interagerer med den. Du vil gøre dette, når du initialiserer DynamoDB-klienten.

Hvis du har installeret og brugt AWS-CLI på din computer før, har du sandsynligvis allerede indstillet AWS-legitimationsoplysninger i dit miljø, og SDK’en vil automatisk hente dine værdier fra miljøet.

Men hvis du ikke har, kan du gå til AWS Identity Access Management (IAM) service i din konsol og opret en ny bruger. Efter oprettelse af brugeren kan du få et adgangsnøgle-id og en hemmelig nøgle, som er dine personlige legitimationsoplysninger.

Tilføj disse legitimationsoplysninger til dit miljø ved at køre følgende terminalkommandoer til din platform:

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'

Derefter, tilbage i dit Node.js-projekt, skal du oprette en ny fil og navngive den dynamodb.js. I denne fil skal du instansiere en ny AWS DynamoDB-klient ved hjælp af følgende kode:

 const { DynamoDB } = require('@aws-sdk/client-dynamodb')

const region = "us-east-1"

const client = new DynamoDB({ region })

Ret simpelt! AWS sørger for, at du ikke afslører nogen af ​​dine sikkerhedsoplysninger i din kode, så mens koden ovenfor forsøger at oprette klienten, læser den først adgangsnøglen og den hemmelige nøgle fra dit miljø.

Den nyoprettede klient giver dig mulighed for at udføre forskellige operationer, såsom oprettelse af tabeller og læsning og skrivning af data.

DynamoDB er skemaløs ligesom andre NoSQL-databaser, så du kan altid tilføje nye attributter (felter) til en tabel når som helst. Det er derfor, du kun behøver at tilføje attributter, der fungerer som primære nøgler til en DynamoDB-tabel, når du opretter den.

Tjek følgende kode, som opretter en ny tabel (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 det sted, hvor du definerer tabellens nøgleattributter og deres typer. E-mail-attributten her har type S, hvilket betyder, at feltet forventer en streng som sin værdi. De tre tilgængelige attributtyper er S, N og B (streng, tal og binær).

  Sådan bruger du et sikkerhedskameras nattesyn gennem et vindue

Du skal bruge KeySchema til at definere primære nøgler, som hjælper med at finde og organisere elementer hurtigt. DynamoDB forventer, at de attributter, du tilføjer, når du opretter tabellen, er nøgleattributter, så e-mail er den primære nøgle her. Du skal tilføje det til KeySchema og angive dets KeyType (HASH).

Den anden tilgængelige KeyType-værdi er RANGE, som bruges til sorteringsnøgler. Sorteringsnøgler er nyttige i tilfælde, hvor du måske har data med de samme HASH-nøgler i en tabel, og du vil gruppere dem efter nogle ekstra data såsom dato eller farve, kan du gøre de ekstra data til en RANGE-nøgle.

Den tredje vigtige parameter i ovenstående kode er ProvisionedThroughput. Det er her, du definerer antallet af læsninger og skrivninger, du ønsker, at DynamoDb skal tillade på bordet pr. sekund.

Når du kører koden ovenfor, skulle du få output, der ser sådan ud:

Hvis du tjekker dit DynamoDB-tabeller-dashboard i webkonsollen, vil du se, at tabellen enten stadig er klargjort eller med status som aktiv allerede.

Overvej altid dine applikationsbehov, når du angiver ReadCapacityUnits og WriteCapacityUnits, fordi en upassende værdi kan føre til ydeevneproblemer eller høje faktureringsomkostninger på din konto.

Når du er sikker på, at bordet allerede er aktivt, kan du udføre CRUD-operationer på det.

Følgende er nogle kodeeksempler, der viser dig, hvordan du skriver og læser data fra kundetabellen.

  • Tilføj data til tabellen. For at skrive data til en tabel skal du bruge klientens putItem-metode. Koden nedenfor tilføjer en ny kunde til 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 indeholder TableName, som er den tabel, du skriver til, og feltet Item, som indeholder de data, du tilføjer med deres specifikke typer. Læg mærke til de nye felter, der ikke var i tabellen oprindeligt, sådan fungerer DynamoDB fleksibelt. Du kan se dataene i din database i din konsol på denne måde:

      Bedste kodende Bootcamp-platforme til at transformere din karriere
  • Læs data fra tabellen. DynamoDB giver dig mulighed for at læse data på forskellige måder. SDK’ens scanningsfunktion læser hele tabellen, mens getItem kun læser specifikke 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 brugeren efter e-mail-værdien:

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

        const customer = await client.getItem(params)
        console.log(customer)
    }

    getCustomerByEmail("[email protected]")

  • Opdater data i tabellen. For at opdatere eksisterende data i en tabel skal du bruge SDK’ens updateItem-funktion. Følgende kode viser, hvordan man opdaterer en specifik 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å vælge at gøre din funktion dynamisk ved at bygge opdateringsudtryk fra dine opdateringsdata. DynamoDBs fleksibilitet giver dig mulighed for at håndtere enhver operation efter dine behov.

  • Slet data fra tabellen. For at slette en post fra DynamoDB skal du bruge deleteItem-funktionen og nøglen til den pågældende post. Sådan 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]")

  • Opbygning af effektive applikationer med DynamoDB

    Amazon Web Services fortsætter med at trives. Det giver en tilgængelig platform, du kan bruge til at levere effektive, sikre digitale løsninger. DynamoDB er det perfekte valg, hvis du leder efter en database, der kan køre uden at bekymre dig om infrastruktur eller sikkerhed.

    Du er nu udstyret med alt, hvad du behøver for at komme i gang med DynamoDB i Node.js, og du kan trygt vælge DynamoDB til din næste Node.js-applikation.