Az AWS DynamoDB használata Node.js alkalmazásban

Kulcs elvitelek

  • A DynamoDB az AWS által kínált hatékony NoSQL-adatbázis, amely nagy mennyiségű, változatos adatot képes kezelni a teljesítmény, a tartósság vagy a megbízhatóság veszélyeztetése nélkül.
  • A DynamoDB Node.js-ben való használatának megkezdéséhez telepítenie kell a client-dynamodb csomagot az aws-sdk fájlból, és konfigurálnia kell a hitelesítő adatait.
  • A DynamoDB lehetővé teszi a táblák egyszerű létrehozását, az adatok írását és olvasását, a rekordok frissítését és a rekordok törlését az ügyfél metódusai és paraméterei segítségével. Rugalmasságot és méretezhetőséget kínál a hatékony alkalmazásfejlesztéshez.

A modern alkalmazásfejlesztés nagy részének robusztus programozási nyelvek és hatékony adatbázisok keverékére van szüksége.

Az Amazon Web Services (AWS) egyik megoldása a DynamoDB, egy olyan eszköz, amely forradalmasíthatja az adatkezelést. Segítségével gyorsan létrehozhat egy adatbázist nagy mennyiségű, változatos adat kezelésére.

Mi az a DynamoDB?

Az AWS különféle adatbázis-szükségletekhez kínál szolgáltatásokat, például az Amazon RDS-t relációs adatbázisokhoz, és a DocumentDB-t a dokumentumadatbázisokhoz, például a MongoDB-hez. A DynamoDB egy NoSQL adatbázis az adatok kulcsérték formátumban történő tárolására.

A DynamoDB nagy mennyiségű adatot képes kezelni az elosztott infrastruktúrán keresztül a teljesítmény, a tartósság vagy a megbízhatóság veszélyeztetése nélkül. Rugalmas modellt kínál, amely lehetővé teszi az adatok egyszerű tárolását és lekérdezését, legyenek azok strukturált vagy strukturálatlanok.

A DynamoDB adatbázisként használható különféle típusú alkalmazásokhoz. Hozzáférhet közvetlenül az AWS webkonzolról és programozottan az AWS-CLI-n keresztül, vagy az AWS-SDK használatával webalkalmazásokból.

A DynamoDB használatának megkezdése a Node.js-ben

A Node.js-ben számos eszköz létezik a háttér-API-k létrehozására, és szabadon választhatja ki az API adatbázisát, ha ezen eszközök bármelyikével dolgozik. A Node.js széles körű támogatást nyújt a külső szolgáltatásokhoz, beleértve az olyan adatbázisokat, mint az AWS DynamoDB.

Mindössze az AWS-szolgáltatás eléréséhez a Node-alkalmazásból kell az adott szolgáltatáshoz tartozó aws-sdk ügyfélcsomag. Például a DynamoDB eléréséhez telepítenie kell a client-dynamodb csomagot az aws-sdk alatt.

A csomag telepítéséhez futtassa ezt a parancsot a projektkönyvtárban:

 npm install @aws-sdk/client-dynamodb

Az aws-sdk/client-dynamodb Node.js projektben való telepítése után hozzá kell adnia a DynamoDB tábla régióját a konfigurációhoz, mielőtt kapcsolatba lépne vele. Ezt a DynamoDB kliens inicializálásakor kell megtennie.

  Hogyan távolíthatunk el valakit a Slack csatornáról [All Devices]

Ha korábban telepítette és használta az AWS-CLI-t a számítógépén, akkor valószínűleg már beállította az AWS-hitelesítési adatokat a környezetben, és az SDK automatikusan megkapja az értékeket a környezetből.

De ha még nem, akkor irány a AWS Identity Access Management (IAM) szolgáltatást a konzolon, és hozzon létre egy új felhasználót. A felhasználó létrehozása után hozzáférési kulcsazonosítót és titkos kulcsot kaphat, amelyek az Ön személyes hitelesítő adatai.

Adja hozzá ezeket a hitelesítő adatokat a környezetéhez a következő terminálparancsok futtatásával a platformon:

Unix, Linux vagy macOS rendszeren:

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

Windowson (CMD):

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

Windowson (PowerShell):

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

Ezután a Node.js projektben hozzon létre egy új fájlt, és nevezze el dynamodb.js-nek. Ebben a fájlban hozzon létre egy új AWS DynamoDB-ügyfelet a következő kóddal:

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

const region = "us-east-1"

const client = new DynamoDB({ region })

Nagyon egyszerű! Az AWS gondoskodik arról, hogy ne tegye közzé biztonsági hitelesítő adatait a kódban, így miközben a fenti kód megpróbálja létrehozni az ügyfelet, először beolvassa a hozzáférési kulcsot és a titkos kulcsot a környezetéből.

Az újonnan létrehozott kliens különféle műveletek végrehajtását teszi lehetővé, például táblázatok létrehozását, valamint adatok olvasását és írását.

A DynamoDB a többi NoSQL-adatbázishoz hasonlóan sémamentes, így bármikor hozzáadhat új attribútumokat (mezőket) egy táblához. Ezért csak olyan attribútumokat kell hozzáadnia, amelyek elsődleges kulcsként szolgálnak a DynamoDB táblához annak létrehozásakor.

Nézze meg a következő kódot, amely egy új táblát (Ügyfél) hoz létre a DynamoDB-ben:

 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();

Az AttributeDefinitions mezőben határozhatja meg a tábla legfontosabb attribútumait és típusait. Az Email attribútum itt S típusú, ami azt jelenti, hogy a mező karakterláncot vár értékeként. A három elérhető attribútumtípus az S, N és B (karakterlánc, szám és bináris).

  Az AZ betűk automatikus kitöltése az Excelben

A KeySchema-ra van szükség az elsődleges kulcsok meghatározásához, amelyek segítenek az elemek gyors megtalálásában és rendszerezésében. A DynamoDB elvárja, hogy a tábla létrehozásakor hozzáadott attribútumok kulcsattribútumok legyenek, ezért az e-mail itt az elsődleges kulcs. Hozzá kell adnia a KeySchemához, és meg kell adnia a kulcstípust (HASH).

A másik elérhető KeyType érték a RANGE, amely a rendezési kulcsokhoz használatos. A rendezési kulcsok olyan esetekben hasznosak, amikor előfordulhat, hogy egy táblázatban ugyanazokkal a HASH-kulcsokkal rendelkező adatok vannak, és bizonyos extra adatok, például dátum vagy szín szerint csoportosítani szeretné őket, az extra adatot RANGE-kulccsá teheti.

A harmadik fontos paraméter a fenti kódban a ProvisionedThroughput. Itt adhatja meg, hogy a DynamoDb másodpercenként hány olvasást és írást engedélyezzen az asztalon.

A fenti kód futtatásakor a következő kimenetet kell kapnia:

Ha ellenőrzi a DynamoDB táblák irányítópultját a webkonzolon, akkor azt fogja látni, hogy a tábla vagy még ki van építve, vagy állapota már aktív.

Mindig vegye figyelembe az alkalmazás igényeit a ReadCapacityUnits és WriteCapacityUnits megadásakor, mert a nem megfelelő érték teljesítményproblémákat vagy magas számlázási költségeket okozhat a fiókjában.

Ha biztos abban, hogy a tábla már aktív, CRUD műveleteket hajthat végre rajta.

Az alábbiakban néhány kódpélda látható, amelyek bemutatják, hogyan írjon és olvasson ki adatokat az Ügyfél táblából.

  • Adjon hozzá adatokat a táblázathoz. Adatok táblába írásához szükség van az ügyfél putItem metódusára. Az alábbi kód hozzáad egy új ügyfelet a DynamoDB Ügyféltáblájához.
     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)

    A params objektum tartalmazza a TableName-et, amely az a tábla, amelybe ír, és az Elem mezőt, amely tartalmazza a hozzáadni kívánt adatokat, azok adott típusaival együtt. Figyelje meg azokat az új mezőket, amelyek kezdetben nem voltak a táblázatban, így működik a DynamoDB rugalmasan. Az adatbázisában lévő adatokat a következőképpen tekintheti meg a konzolon:

      11 hordozható erőmű otthonra, kempingezésre vagy kirándulásokra
  • Olvassa el az adatokat a táblázatból. A DynamoDB különféle módokon teszi lehetővé az adatok olvasását. Az SDK vizsgálati funkciója a teljes táblát, míg a getItem csak meghatározott adatokat olvas be. Például az alábbi kód minden ügyfélhez eljut:
     const getAllCustomers = async () => {
        const params = {
            TableName: "Customer"
        }

        const customers = await client.scan(params)
        console.log(customers)
    }

    Míg a következő kód az e-mail érték alapján kapja meg a felhasználót:

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

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

    getCustomerByEmail("[email protected]")

  • Frissítse az adatokat a táblázatban. A táblázatban lévő meglévő adatok frissítéséhez használja az SDK updateItem funkcióját. A következő kód bemutatja, hogyan frissíthet egy adott rekordot:
      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)
     }

    Dinamikussá teheti a függvényt, ha frissítési kifejezéseket épít fel a frissítési adatokból. A DynamoDB rugalmassága lehetővé teszi, hogy minden műveletet az Ön igényei szerint kezeljen.

  • Törölje az adatokat a táblázatból. Egy rekord DynamoDB-ből való törléséhez szükség van a deleteItem függvényre és az adott rekord kulcsára. A megvalósítás módja:
     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]")

  • Hatékony alkalmazások létrehozása a DynamoDB segítségével

    Az Amazon Web Services továbbra is virágzik. Hozzáférhető platformot biztosít, amellyel hatékony, biztonságos digitális megoldásokat kínálhat. A DynamoDB a tökéletes választás, ha olyan adatbázist keres, amely anélkül futhat, hogy aggódnia kellene az infrastruktúra vagy a biztonság miatt.

    Most már mindennel fel van szerelve, amire szüksége van a DynamoDB használatának megkezdéséhez a Node.js-ben, és magabiztosan választhatja a DynamoDB-t a következő Node.js-alkalmazásához.