Използване на AWS DynamoDB в приложение Node.js

Ключови изводи

  • DynamoDB е мощна NoSQL база данни, предлагана от AWS, която може да обработва големи количества разнообразни данни, без да прави компромис с производителността, издръжливостта или надеждността.
  • За да започнете с DynamoDB в Node.js, трябва да инсталирате пакета client-dynamodb от aws-sdk и да конфигурирате вашите идентификационни данни.
  • DynamoDB ви позволява лесно да създавате таблици, да пишете и четете данни, да актуализирате записи и да изтривате записи, като използвате методите и параметрите на клиента. Предлага гъвкавост и мащабируемост за ефективно разработване на приложения.

Голяма част от модерното разработване на приложения се нуждае от комбинация от стабилни езици за програмиране и мощни бази данни.

Едно от решенията, които Amazon Web Services (AWS) предлага, е DynamoDB, инструмент, който може да направи революция в управлението на вашите данни. Използвайки го, можете бързо да предоставите база данни за обработка на големи количества разнообразни данни.

Какво е DynamoDB?

AWS предлага услуги за различни нужди от бази данни, като Amazon RDS за релационни бази данни и DocumentDB за бази данни с документи като MongoDB. DynamoDB е NoSQL база данни за съхраняване на данни във формат ключ-стойност.

DynamoDB може да обработва големи количества данни в разпределена инфраструктура без компромис с производителността, издръжливостта или надеждността. Той предлага гъвкав модел, който ви позволява лесно да съхранявате и заявявате данни, независимо дали са структурирани или неструктурирани.

Можете да използвате DynamoDB като база данни за различни видове приложения. Можете да получите достъп до него директно от уеб конзолата на AWS и програмно чрез AWS-CLI или от уеб приложения, използващи AWS-SDK.

Първи стъпки с DynamoDB в Node.js

Има много инструменти за изграждане на backend API в Node.js и вие сте свободни да изберете базата данни за вашия API, когато работите с някой от тези инструменти. Node.js предоставя широка поддръжка за външни услуги, включително бази данни като AWS DynamoDB.

Всичко, от което се нуждаете за достъп до AWS услуга от вашето приложение Node, е клиентският пакет aws-sdk за тази услуга. Например, за достъп до DynamoDB, трябва да инсталирате пакета client-dynamodb под aws-sdk.

  Как да настроите инструмента за управление на сървъра Ajenti на Ubuntu Server

Изпълнете тази команда в директорията на вашия проект, за да инсталирате пакета:

 npm install @aws-sdk/client-dynamodb

След като инсталирате aws-sdk/client-dynamodb във вашия проект Node.js, трябва да добавите региона на вашата DynamoDB таблица към конфигурацията, преди да взаимодействате с нея. Ще направите това, когато инициализирате DynamoDB клиента.

Ако сте инсталирали и използвали AWS-CLI на вашия компютър преди, вероятно вече имате зададени идентификационни данни за AWS във вашата среда и SDK автоматично ще получи вашите стойности от средата.

Но ако не сте, можете да се насочите към AWS Identity Access Management (IAM) услуга във вашата конзола и създайте нов потребител. След като създадете потребителя, можете да получите идентификатор на ключ за достъп и таен ключ, които са вашите лични идентификационни данни.

Добавете тези идентификационни данни към вашата среда, като изпълните следните терминални команди за вашата платформа:

Под Unix, Linux или macOS:

 export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'

В Windows (CMD):

 set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'

В Windows (PowerShell):

 $env:AWS_ACCESS_KEY_ID='your access key ID'
$env:AWS_SECRET_ACCESS_KEY='you secret access key'

След това, обратно във вашия проект Node.js, създайте нов файл и го наречете dynamodb.js. В този файл създайте нов клиент на AWS DynamoDB, като използвате следния код:

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

const region = "us-east-1"

const client = new DynamoDB({ region })

Доста просто! AWS се уверява, че не разкривате никакви идентификационни данни за сигурност във вашия код, така че докато кодът по-горе се опитва да създаде клиента, той първо чете ключа за достъп и секретния ключ от вашата среда.

Новосъздаденият клиент ви позволява да извършвате различни операции, като създаване на таблици и четене и запис на данни.

DynamoDB е без схема точно като другите NoSQL бази данни, така че винаги можете да добавяте нови атрибути (полета) към таблица по всяко време. Ето защо трябва да добавите само атрибути, които ще служат като първични ключове към таблица DynamoDB, когато я създавате.

Вижте следния код, който създава нова таблица (Клиент) в 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();

Полето AttributeDefinitions е мястото, където дефинирате ключовите атрибути на таблицата и техните типове. Атрибутът Email тук има тип S, което означава, че полето очаква String като своя стойност. Трите налични типа атрибути са S, N и B (низ, число и двоичен).

  5 творци, които трябва да гледате, за да подобрите уменията си за поточно предаване на живо

Нуждаете се от KeySchema, за да дефинирате първични ключове, които помагат за бързо намиране и организиране на елементи. DynamoDB очаква атрибутите, които добавяте при създаването на таблицата, да бъдат ключови атрибути, така че имейлът е основният ключ тук. Трябва да го добавите към KeySchema и да посочите неговия KeyType (HASH).

Другата налична стойност на KeyType е RANGE, която се използва за сортиране на ключове. Ключовете за сортиране са полезни в случаите, когато може да имате данни със същите HASH ключове в таблица и искате да ги групирате според някои допълнителни данни, като дата или цвят, можете да направите допълнителните данни ключ RANGE.

Третият важен параметър в горния код е ProvisionedThroughput. Това е мястото, където определяте броя на четенията и записите, които искате DynamoDb да разреши на таблицата за секунда.

Когато стартирате кода по-горе, трябва да получите резултат, който изглежда така:

Ако проверите таблото за управление на вашите DynamoDB таблици в уеб конзолата, ще видите таблицата или все още да се предоставя, или със статус на вече активна.

Винаги вземайте предвид нуждите на вашето приложение, когато указвате ReadCapacityUnits и WriteCapacityUnits, защото неподходяща стойност може да доведе до проблеми с производителността или високи разходи за фактуриране на вашия акаунт.

След като сте сигурни, че таблицата вече е активна, можете да извършвате CRUD операции върху нея.

Следват някои примери за код, които ви показват как да пишете и четете данни от таблицата на клиента.

  • Добавете данни към таблицата. За да запишете данни в таблица, имате нужда от метода putItem на клиента. Кодът по-долу добавя нов клиент към таблицата с клиенти в 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 съдържа TableName, което е таблицата, в която пишете, и полето Item, което съдържа данните, които добавяте, с техните специфични типове. Забележете новите полета, които първоначално не бяха в таблицата, така DynamoDB работи гъвкаво. Можете да видите данните във вашата база данни в конзолата си по следния начин:

      Най-добрият софтуер и инструменти за наблюдение на рутер за анализ на честотната лента и трафика
  • Прочетете данните от таблицата. DynamoDB ви позволява да четете данни по различни начини. Функцията за сканиране на SDK чете цялата таблица, докато getItem чете само конкретни данни. Например кодът по-долу получава всички клиенти:
     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 }
            }
        }

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

    getCustomerByEmail("[email protected]")

  • Актуализирайте данните в таблицата. За да актуализирате съществуващи данни в таблица, използвайте функцията updateItem на SDK. Следният код демонстрира как да актуализирате конкретен запис:
      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)
     }

    Можете също така да изберете да направите функцията си динамична чрез изграждане на изрази за актуализиране от вашите данни за актуализиране. Гъвкавостта на DynamoDB ви позволява да управлявате всяка операция според вашите нужди.

  • Изтрийте данните от таблицата. За да изтриете запис от DynamoDB, имате нужда от функцията deleteItem и ключа на конкретния запис. Ето как да го приложите:
     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]")

  • Изграждане на ефективни приложения с DynamoDB

    Amazon Web Services продължава да процъфтява. Той предоставя достъпна платформа, която можете да използвате, за да предоставяте ефективни и сигурни цифрови решения. DynamoDB е перфектният избор, ако търсите база данни, която да стартирате, без да се притеснявате за инфраструктура или сигурност.

    Вече разполагате с всичко необходимо, за да започнете с DynamoDB в Node.js, и можете уверено да изберете DynamoDB за следващото си приложение Node.js.