Направите овај пример апликације да бисте открили колико лако могу бити базе података.
Кључне Такеаваис
- ДинамоДБ је моћна НоСКЛ база података коју нуди АВС и која може да рукује великим количинама различитих података без угрожавања перформанси, издржљивости или поузданости.
- Да бисте започели са ДинамоДБ у Ноде.јс, потребно је да инсталирате клијент-динамодб пакет из авс-сдк-а и конфигуришете своје акредитиве.
- ДинамоДБ вам омогућава да лако креирате табеле, пишете и читате податке, ажурирате записе и бришете записе користећи клијентове методе и параметре. Нуди флексибилност и скалабилност за ефикасан развој апликација.
За велики део модерног развоја апликација потребна је мешавина робусних програмских језика и моћних база података.
Једно од решења које нуди Амазон Веб Сервицес (АВС) је ДинамоДБ, алатка која може да револуционише управљање вашим подацима. Користећи га, можете брзо обезбедити базу података за руковање великим количинама различитих података.
Шта је ДинамоДБ?
АВС нуди услуге за различите потребе базе података, нпр
Амазон РДС за релационе базе података, и ДоцументДБ за базе података докумената као што је МонгоДБ. ДинамоДБ је НоСКЛ база података за складиштење података у формату кључ/вредност.ДинамоДБ може да рукује великим количинама података широм дистрибуиране инфраструктуре без угрожавања перформанси, издржљивости или поузданости. Нуди флексибилан модел, омогућавајући вам да лако складиштите и постављате упите за податке, било да су структурирани или неструктурирани.
Можете користити ДинамоДБ као базу података за различите типове апликација. Можете му приступити директно са АВС веб конзоле и програмски преко АВС-ЦЛИ или из веб апликација које користе АВС-СДК.
Почетак рада са ДинамоДБ у Ноде.јс
Има их много алати за прављење бацкенд АПИ-ја у Ноде.јс и ви сте слободни да изаберете базу података за свој АПИ када радите са било којим од ових алата. Ноде.јс пружа широку подршку за спољне услуге укључујући базе података као што је АВС ДинамоДБ.
Све што вам треба да приступите АВС услузи из ваше Ноде апликације је клијент авс-сдк пакет за ту услугу. На пример, да бисте приступили ДинамоДБ-у, морате да инсталирате цлиент-динамодб пакет под авс-сдк.
Покрените ову команду у директоријуму вашег пројекта да бисте инсталирали пакет:
npm install @aws-sdk/client-dynamodb
Након инсталирања авс-сдк/цлиент-динамодб у вашем Ноде.јс пројекту, потребно је да додате регион ваше ДинамоДБ табеле у конфигурацију пре него што ступите у интеракцију са њом. Ово ћете урадити када иницијализујете ДинамоДБ клијент.
Ако сте раније инсталирали и користили АВС-ЦЛИ на свом рачунару, вероватно већ имате подешене АВС акредитиве у свом окружењу, а СДК ће аутоматски добити ваше вредности из окружења.
Али ако нисте, можете се упутити на АВС управљање приступом идентитету (ИАМ) сервис у вашој конзоли и креирајте новог корисника. Након креирања корисника, можете добити ИД кључа за приступ и тајни кључ, који су ваши лични акредитиви.
Додајте ове акредитиве свом окружењу тако што ћете покренути следеће команде терминала за своју платформу:
На Уник-у, Линук-у или мацОС-у:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
У оперативном систему Виндовс (ЦМД):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
У оперативном систему Виндовс (ПоверСхелл):
$env: AWS_ACCESS_KEY_ID='your access key ID'
$env: AWS_SECRET_ACCESS_KEY='you secret access key'
Затим, назад у свом пројекту Ноде.јс, креирајте нову датотеку и дајте јој назив динамодб.јс. У овој датотеци инстанцирајте нови АВС ДинамоДБ клијент користећи следећи код:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')
const region = "us-east-1"// your preferred region
const client = new DynamoDB({ region })
Прилично једноставно! АВС се стара да не откривате ниједан од својих безбедносних акредитива у свом коду, тако да док код изнад покушава да креира клијента, прво чита приступни кључ и тајни кључ из вашег окружења.
Новостворени клијент омогућава вам да извршите различите операције, као што су креирање табела и читање и писање података.
ДинамоДБ је без шема, баш као и друге НоСКЛ базе података, тако да увек можете додати нове атрибуте (поља) табели у било ком тренутку. Због тога је потребно само да додате атрибуте који ће служити као примарни кључеви у ДинамоДБ табелу када је креирате.
Погледајте следећи код који креира нову табелу (Цустомер) у ДинамоДБ:
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();
Тхе АттрибутеДефинитионс поље је место где дефинишете кључне атрибуте табеле и њихове типове. Тхе Емаил атрибут овде има тип С што значи да поље очекује а Низ као своју вредност. Три доступна типа атрибута су С, Н, и Б (Стринг, број и бинарни).
Треба ти КеиСцхема да дефинишете примарне кључеве који помажу да се брзо пронађу и организују ставке. ДинамоДБ очекује да атрибути које додате приликом креирања табеле буду кључни атрибути, тако да је е-пошта овде примарни кључ. Морате га додати у КеиСцхема и навести га КеиТипе (ХАСХ).
Друга доступна вредност КеиТипе је ДОМЕТ који се користи за кључеве сортирања. Кључеви за сортирање су корисни у случајевима када можда имате податке са истим ХАСХ кључевима у табели, а желите да бисте их груписали према неким додатним подацима као што су датум или боја, можете да додате додатне податке РАНГЕ кључ.
Трећи важан параметар у горњем коду је ПровисионедТхроугхпут. Овде дефинишете број читања и писања које желите да ДинамоДб дозволи на табели у секунди.
Када покренете горњи код, требало би да добијете излаз који изгледа овако:
Ако проверите контролну таблу ДинамоДБ табела на веб конзоли, видећете да је табела још увек обезбеђена или у статусу активан већ.
Увек узмите у обзир потребе ваше апликације када наводите РеадЦапацитиУнитс и ВритеЦапацитиУнитс јер неприкладна вредност може довести до проблема са учинком или високих трошкова обрачуна на вашем налогу.
Када будете сигурни да је табела већ активна, можете извршити ЦРУД операције на њој.
Следе неки примери кода који вам показују како да пишете и читате податке из Цустомер сто.
-
Додајте податке у табелу. Да бисте уписали податке у табелу, потребан вам је клијент путИтем методом. Код испод додаје новог купца у Цустомер табела у ДинамоДБ-у.
Тхе парамс објекат садржи ТаблеНаме која је табела за коју пишете, и Ставка поље које садржи податке које додајете са њиховим специфичним типовима. Обратите пажњу на нова поља која у почетку нису била у табели, овако ДинамоДБ ради флексибилно. Можете да видите податке у својој бази података у својој конзоли на следећи начин: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)
-
Прочитајте податке из табеле. ДинамоДБ вам омогућава да читате податке на различите начине. СДК-ови скенирати функција чита целу табелу, док гетИтем чита само одређене податке. На пример, код у наставку добија све купце:
Док следећи код добија корисника по вредности е-поште: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]")
-
Ажурирајте податке у табели. Да бисте ажурирали постојеће податке у табели, користите СДК упдатеИтем функција. Следећи код показује како да ажурирате одређени запис:
Такође можете изабрати да своју функцију учините динамичком тако што ћете изградити изразе за ажурирање из ваших података о ажурирању. Флексибилност ДинамоДБ-а вам омогућава да управљате сваком операцијом у складу са вашим потребама.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)
} -
Избришите податке из табеле. Да бисте избрисали запис из ДинамоДБ-а, потребан вам је делетеИтем функцију и кључ одређеног записа. Ево како да то примените:
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]")
Изградња ефикасних апликација са ДинамоДБ
Амазон Веб Сервицес наставља да напредује. Пружа приступачну платформу коју можете користити за испоруку ефикасних, сигурних дигиталних решења. ДинамоДБ је савршен избор ако тражите базу података за покретање без бриге о инфраструктури или безбедности.
Сада сте опремљени свиме што вам је потребно да започнете са ДинамоДБ-ом у Ноде.јс-у и можете са сигурношћу изабрати ДинамоДБ за своју следећу Ноде.јс апликацију.