Byg denne eksempelapp for at opdage, hvor nemme databaser kan være.
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, som f.eks Amazon RDS til relationelle databaser, og DocumentDB for dokumentdatabaser så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 et 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 klienten aws-sdk pakke til den service. For at få adgang til DynamoDB skal du for eksempel installere klient-dynamodb pakke under aws-sdk.
Kør denne kommando i din projektmappe for at installere pakken:
npm install @aws-sdk/client-dynamodb
Efter installation 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 det, 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, opret en ny fil og navngiv 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"// your preferred region
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 ovenstående forsøger at oprette klienten, læser den først adgangsnøglen og den hemmelige nøgle fra dit miljø.
Det 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();
Det AttributDefinitioner feltet er, hvor du definerer tabellens nøgleattributter og deres typer. Det E-mail attribut her har type S hvilket betyder, at feltet forventer en Snor som dens værdi. De tre tilgængelige attributtyper er S, N, og B (streng, tal og binær).
Du har brug for KeySchema at definere primære nøgler, som hjælper med at finde og organisere varer 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 det KeyType (HASH).
Den anden tilgængelige KeyType-værdi er RÆKKEVIDDE 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 ønsker det for at gruppere dem efter nogle ekstra data såsom dato eller farve, kan du gøre de ekstra data til et 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 en status på aktiv allerede.
Overvej altid dine ansøgningsbehov, når du specificerer ReadCapacity Units og WriteCapacity Units 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 Kunde bord.
-
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 Kunde tabel i DynamoDB.
Det params objektet indeholder Tabelnavn som er bordet, du skriver til, og Vare felt, 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: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)
-
Læs data fra tabellen. DynamoDB giver dig mulighed for at læse data på forskellige måder. SDK'erne Scan funktion læser hele tabellen, mens getItem læser kun specifikke data. For eksempel får koden nedenfor alle kunder:
Mens følgende kode henter brugeren efter e-mail-værdien: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]")
-
Opdater data i tabellen. For at opdatere eksisterende data i en tabel skal du bruge SDK'erne opdatere vare fungere. Følgende kode viser, hvordan man opdaterer en specifik post:
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.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)
} -
Slet data fra tabellen. For at slette en post fra DynamoDB skal du bruge slet element funktion 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.