Ključne Tačke
- DynamoDB je moćna NoSQL baza podataka koju nudi AWS, sposobna da upravlja velikim količinama raznovrsnih podataka bez kompromisa po pitanju performansi, trajnosti ili pouzdanosti.
- Za početak korišćenja DynamoDB-a u Node.js okruženju, neophodno je instalirati klijent-dynamodb paket iz aws-sdk i konfigurisati svoje akreditive.
- DynamoDB omogućava lako kreiranje tabela, upisivanje i čitanje podataka, ažuriranje unosa, kao i njihovo brisanje, koristeći metode i parametre klijenta. Pruža fleksibilnost i skalabilnost za efikasan razvoj aplikacija.
U velikoj meri savremenog razvoja aplikacija, ključna je kombinacija pouzdanih programskih jezika i snažnih baza podataka.
Jedno od rešenja koje nudi Amazon Web Services (AWS) je DynamoDB, alat koji može transformisati način na koji upravljate podacima. Korišćenjem ovog alata, brzo možete obezbediti bazu podataka sposobnu da rukuje ogromnim količinama različitih informacija.
Šta je DynamoDB?
AWS nudi različite usluge za potrebe baza podataka, uključujući Amazon RDS za relacione baze podataka i DocumentDB za baze dokumenata, kao što je MongoDB. DynamoDB je NoSQL baza podataka koja podatke skladišti u formatu ključ/vrednost.
DynamoDB može da obradi velike količine podataka raspoređenih kroz distribuiranu infrastrukturu, bez ugrožavanja performansi, trajnosti i pouzdanosti. Pruža fleksibilan model, omogućavajući lako skladištenje i pretraživanje podataka, bilo da su oni strukturirani ili nestrukturirani.
DynamoDB se može koristiti kao baza podataka za različite tipove aplikacija. Pristup mu je moguć direktno sa AWS web konzole, programski putem AWS-CLI, ili iz web aplikacija koje koriste AWS-SDK.
Početak Rada sa DynamoDB u Node.js
Postoji mnogo alata za kreiranje back-end API-ja u Node.js-u, i slobodni ste da odaberete bazu podataka za vaš API kada radite sa bilo kojim od ovih alata. Node.js pruža široku podršku za spoljne servise, uključujući i baze podataka kao što je AWS DynamoDB.
Sve što vam je potrebno za pristup AWS servisu iz vaše Node aplikacije je klijentski aws-sdk paket za taj servis. Na primer, za pristup DynamoDB-u, neophodno je instalirati klijent-dynamodb paket u okviru aws-sdk.
Pokrenite ovu komandu u direktorijumu vašeg projekta da biste instalirali paket:
npm install @aws-sdk/client-dynamodb
Nakon instaliranja aws-sdk/client-dynamodb u vaš Node.js projekat, potrebno je dodati region vaše DynamoDB tabele u konfiguraciju pre nego što stupite u interakciju sa njom. Ovo ćete učiniti prilikom inicijalizacije DynamoDB klijenta.
Ako ste ranije instalirali i koristili AWS-CLI na svom računaru, verovatno već imate postavljene AWS akreditive u svom okruženju, a SDK će automatski preuzeti vaše vrednosti iz okruženja.
U suprotnom, možete otići na AWS servis za upravljanje pristupom i identitetom (IAM) u vašoj konzoli i kreirati novog korisnika. Nakon kreiranja korisnika, možete dobiti ID pristupnog ključa i tajni ključ, koji predstavljaju vaše lične akreditive.
Dodajte ove akreditive svom okruženju tako što ćete pokrenuti sledeće terminalske komande za vašu platformu:
Na Unix-u, Linux-u ili macOS-u:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
U operativnom sistemu Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
U operativnom sistemu Windows (PowerShell):
$env:AWS_ACCESS_KEY_ID='your access key ID'
$env:AWS_SECRET_ACCESS_KEY='you secret access key'
Zatim, u svom Node.js projektu, kreirajte novu datoteku i nazovite je dynamodb.js. U ovoj datoteci instancirajte novi AWS DynamoDB klijent koristeći sledeći kod:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')const region = "us-east-1"
const client = new DynamoDB({ region })
Prilično jednostavno! AWS osigurava da ne izlažete nijedan od vaših sigurnosnih akreditiva u vašem kodu, tako da dok gornji kod pokušava da kreira klijenta, prvo čita pristupni ključ i tajni ključ iz vašeg okruženja.
Novokreirani klijent vam omogućava obavljanje različitih operacija, kao što su kreiranje tabela, čitanje i upisivanje podataka.
DynamoDB je bez šema, baš kao i druge NoSQL baze podataka, tako da uvek možete dodati nove atribute (polja) tabeli u bilo kom trenutku. Zbog toga je potrebno samo dodati atribute koji će služiti kao primarni ključevi u DynamoDB tabeli prilikom njenog kreiranja.
Pogledajte sledeći kod koji kreira novu tabelu (customer) u DynamoDB-u:
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();
Polje AttributeDefinitions je mesto gde definišete ključne atribute tabele i njihove tipove. Atribut Email ovde ima tip S, što znači da polje očekuje string kao svoju vrednost. Tri dostupna tipa atributa su S, N i B (String, Number i Binary).
Potrebna vam je KeySchema da biste definisali primarne ključeve koji pomažu u brzom pronalaženju i organizovanju stavki. DynamoDB očekuje da atributi koje dodate prilikom kreiranja tabele budu ključni atributi, tako da je e-mail ovde primarni ključ. Morate ga dodati u KeySchema i navesti njegov KeyType (HASH).
Druga dostupna vrednost KeyType-a je RANGE, koji se koristi za ključeve za sortiranje. Ključevi za sortiranje su korisni u slučajevima kada imate podatke sa istim HASH ključevima u tabeli, i želite da ih grupišete prema dodatnim podacima kao što su datum ili boja, možete dodati dodatne informacije ključu RANGE.
Treći važan parametar u gornjem kodu je ProvisionedThroughput. Ovde definišete broj čitanja i upisa koje želite da DynamoDB dozvoli na tabeli u sekundi.
Kada pokrenete gornji kod, trebalo bi da dobijete izlaz koji izgleda ovako:
Ako proverite kontrolnu tablu DynamoDB tabela na web konzoli, videćete da je tabela još u procesu obezbeđivanja ili je već aktivna.
Uvek uzmite u obzir potrebe vaše aplikacije kada navodite ReadCapacityUnits i WriteCapacityUnits, jer neprikladna vrednost može dovesti do problema sa performansama ili visokih troškova na vašem nalogu.
Kada ste sigurni da je tabela aktivna, možete izvršiti CRUD operacije na njoj.
Sledi nekoliko primera koda koji pokazuju kako pisati i čitati podatke iz tabele Klijent.
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)
Objekat params sadrži TableName, što je tabela u koju pišete, i polje Item koje sadrži podatke koje dodajete sa njihovim specifičnim tipovima. Obratite pažnju na nova polja koja inicijalno nisu bila u tabeli, što pokazuje fleksibilnost DynamoDB-a. Možete da vidite podatke u svojoj bazi podataka u svojoj konzoli na sledeći način:
const getAllCustomers = async () => {
const params = {
TableName: "Customer"
}const customers = await client.scan(params)
console.log(customers)
}
Dok sledeći kod dobija korisnika po vrednosti e-pošte:
const getCustomerByEmail = async (email) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
}
}const customer = await client.getItem(params)
console.log(customer)
}getCustomerByEmail("[email protected]")
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)
}
Takođe možete izabrati da svoju funkciju učinite dinamičnom tako što ćete izgraditi izraze za ažuriranje iz vaših podataka o ažuriranju. Fleksibilnost DynamoDB-a vam omogućava da rukujete svakom operacijom u skladu sa vašim potrebama.
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]")
Izgradnja Efikasnih Aplikacija sa DynamoDB
Amazon Web Services nastavlja da napreduje. Pruža pristupačnu platformu koju možete koristiti za isporuku efikasnih, sigurnih digitalnih rešenja. DynamoDB je savršen izbor ako tražite bazu podataka za pokretanje bez brige o infrastrukturi ili bezbednosti.
Sada ste opremljeni svim što vam je potrebno da biste započeli sa DynamoDB-om u Node.js-u, i možete sa sigurnošću izabrati DynamoDB za vašu sledeću Node.js aplikaciju.