Crie este aplicativo de exemplo para descobrir como os bancos de dados podem ser fáceis.

Principais conclusões

  • DynamoDB é um poderoso banco de dados NoSQL oferecido pela AWS que pode lidar com grandes quantidades de dados diversos sem comprometer o desempenho, a durabilidade ou a confiabilidade.
  • Para começar a usar o DynamoDB no Node.js, você precisa instalar o pacote client-dynamodb do aws-sdk e configurar suas credenciais.
  • O DynamoDB permite criar facilmente tabelas, gravar e ler dados, atualizar registros e excluir registros usando métodos e parâmetros do cliente. Ele oferece flexibilidade e escalabilidade para o desenvolvimento eficiente de aplicativos.

Uma grande parte do desenvolvimento de aplicativos modernos precisa de uma combinação de linguagens de programação robustas e bancos de dados poderosos.

Uma das soluções que a Amazon Web Services (AWS) oferece é o DynamoDB, uma ferramenta que pode revolucionar o gerenciamento de seus dados. Usando-o, você pode provisionar rapidamente um banco de dados para lidar com grandes quantidades de dados diversos.

O que é DynamoDB?

A AWS oferece serviços para diferentes necessidades de banco de dados, como Amazon RDS para bancos de dados relacionaise DocumentDB para bancos de dados de documentos como MongoDB. DynamoDB é um banco de dados NoSQL para armazenar dados em formato chave-valor.

O DynamoDB pode lidar com grandes quantidades de dados em infraestruturas distribuídas sem comprometer o desempenho, a durabilidade ou a confiabilidade. Ele oferece um modelo flexível, permitindo armazenar e consultar facilmente dados, sejam eles estruturados ou não estruturados.

Você pode usar o DynamoDB como banco de dados para vários tipos de aplicativos. Você pode acessá-lo diretamente do console da web da AWS e programaticamente por meio da AWS-CLI ou de aplicativos da web usando o AWS-SDK.

Primeiros passos com DynamoDB em Node.js

Existem muitos ferramentas para construir APIs de back-end em Node.js e você pode escolher o banco de dados para sua API ao trabalhar com qualquer uma dessas ferramentas. Node.js oferece amplo suporte para serviços externos, incluindo bancos de dados como AWS DynamoDB.

Tudo que você precisa para acessar um serviço AWS a partir de seu aplicativo Node é o cliente aws-sdk pacote para esse serviço. Por exemplo, para acessar o DynamoDB, você precisa instalar o cliente-dynamodb pacote abaixo aws-sdk.

Execute este comando no diretório do seu projeto para instalar o pacote:

npm install @aws-sdk/client-dynamodb

Depois de instalar aws-sdk/client-dynamodb no seu projeto Node.js, você precisa adicionar a região da sua tabela DynamoDB à configuração antes de interagir com ela. Você fará isso ao inicializar o cliente DynamoDB.

Se você já instalou e usou AWS-CLI em seu computador antes, provavelmente já tem credenciais da AWS definidas em seu ambiente e o SDK obterá automaticamente seus valores do ambiente.

Mas se ainda não o fez, você pode ir para o Gerenciamento de acesso de identidade da AWS (IAM) service em seu console e crie um novo usuário. Depois de criar o usuário, você pode obter um ID de chave de acesso e uma chave secreta, que são suas credenciais pessoais.

Adicione essas credenciais ao seu ambiente executando os seguintes comandos de terminal para sua plataforma:

No Unix, Linux ou macOS:

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

No Windows (CMD):

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

No Windows (PowerShell):

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

Então, de volta ao seu projeto Node.js, crie um novo arquivo e nomeie-o dinamodb.js. Neste arquivo, instancie um novo cliente AWS DynamoDB usando o seguinte código:

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

const region = "us-east-1"// your preferred region

const client = new DynamoDB({ region })

Bem simples! A AWS garante que você não exponha nenhuma de suas credenciais de segurança em seu código, portanto, embora o código acima tenta criar o cliente, primeiro ele lê a chave de acesso e a chave secreta do seu ambiente.

O recém-criado cliente permite realizar diversas operações, como criação de tabelas e leitura e gravação de dados.

O DynamoDB não tem esquema, assim como outros bancos de dados NoSQL, então você sempre pode adicionar novos atributos (campos) a uma tabela a qualquer momento. É por isso que você só precisa adicionar atributos que servirão como chaves primárias a uma tabela do DynamoDB ao criá-la.

Confira o código a seguir que cria uma nova tabela (Cliente) no 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();

O Definições de atributos campo é onde você define os atributos-chave da tabela e seus tipos. O E-mail atributo aqui tem tipo S o que significa que o campo espera um Corda como seu valor. Os três tipos de atributos disponíveis são S, N, e B (String, Número e Binário).

Você precisa do Esquema-chave para definir chaves primárias que ajudam a localizar e organizar itens rapidamente. O DynamoDB espera que os atributos adicionados ao criar a tabela sejam atributos-chave, portanto Email é a chave primária aqui. Você deve adicioná-lo ao KeySchema e especificar seu Tipo de chave (CERQUILHA).

O outro valor KeyType disponível é FAIXA que é usado para chaves de classificação. As chaves de classificação são úteis nos casos em que você pode ter dados com as mesmas chaves HASH em uma tabela e deseja para agrupá-los de acordo com alguns dados extras, como data ou cor, você pode transformar os dados extras em um RANGE chave.

O terceiro parâmetro importante no código acima é o Taxa de transferência provisionada. É aqui que você define o número de leituras e gravações que deseja que o DynamoDb permita na tabela por segundo.

Ao executar o código acima, você deverá obter uma saída semelhante a esta:

Se você verificar o painel de tabelas do DynamoDB no console da web, verá a tabela ainda sendo provisionada ou com status de ativo já.

Sempre considere as necessidades da sua aplicação ao especificar o Unidades de capacidade de leitura e Unidades de capacidade de gravação porque um valor inadequado pode causar problemas de desempenho ou custos elevados de faturamento em sua conta.

Quando tiver certeza de que a tabela já está ativa, você poderá realizar operações CRUD nela.

A seguir estão alguns exemplos de código que mostram como escrever e ler dados do Cliente mesa.

  1. Adicione dados à tabela. Para gravar dados em uma tabela, você precisa do cliente colocarItem método. O código abaixo adiciona um novo cliente ao Cliente tabela no 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)

    O parâmetros objeto contém o Nome da tabela qual é a tabela para a qual você está escrevendo e o Item campo que contém os dados que você está adicionando com seus tipos específicos. Observe os novos campos que não estavam na tabela inicialmente, é assim que o DynamoDB funciona de forma flexível. Você pode visualizar os dados do seu banco de dados no console assim:
  2. Ler dados da tabela. O DynamoDB permite ler dados de várias maneiras. O SDK Varredura função lê a tabela inteira, enquanto getItem lê apenas dados específicos. Por exemplo, o código abaixo obtém todos os clientes:
    const getAllCustomers = async () => {
    const params = {
    TableName: "Customer"
    }

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

    Enquanto o código a seguir obtém o usuário pelo valor do email:
    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]")

  3. Atualizar dados na tabela. Para atualizar os dados existentes em uma tabela, use o SDK atualizarItem função. O código a seguir demonstra como atualizar um registro específico:
     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)
     }

    Você também pode optar por tornar sua função dinâmica criando expressões de atualização a partir de seus dados de atualização. A flexibilidade do DynamoDB permite lidar com cada operação de acordo com suas necessidades.
  4. Excluir dados da tabela. Para excluir um registro do DynamoDB, você precisa do apagar item função e a chave do registro específico. Veja como implementá-lo:
    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]")

Construindo aplicações eficientes com DynamoDB

Amazon Web Services continua a prosperar. Ele fornece uma plataforma acessível que você pode usar para fornecer soluções digitais eficientes e seguras. DynamoDB é a escolha perfeita se você procura um banco de dados para funcionar sem se preocupar com infraestrutura ou segurança.

Agora você está equipado com tudo o que precisa para começar a usar o DynamoDB no Node.js e pode escolher o DynamoDB com segurança para seu próximo aplicativo Node.js.