Bouw deze voorbeeld-app en ontdek hoe eenvoudig databases kunnen zijn.
Belangrijkste leerpunten
- DynamoDB is een krachtige NoSQL-database aangeboden door AWS die grote hoeveelheden uiteenlopende gegevens kan verwerken zonder concessies te doen aan de prestaties, duurzaamheid of betrouwbaarheid.
- Om aan de slag te gaan met DynamoDB in Node.js, moet u het client-dynamodb-pakket installeren vanaf de aws-sdk en uw inloggegevens configureren.
- Met DynamoDB kunt u eenvoudig tabellen maken, gegevens schrijven en lezen, records bijwerken en records verwijderen met behulp van de methoden en parameters van de klant. Het biedt flexibiliteit en schaalbaarheid voor efficiënte applicatieontwikkeling.
Een groot deel van de moderne app-ontwikkeling heeft een mix van robuuste programmeertalen en krachtige databases nodig.
Eén van de oplossingen die Amazon Web Services (AWS) biedt is DynamoDB, een tool die een revolutie teweeg kan brengen in uw databeheer. Hiermee kunt u snel een database inrichten die grote hoeveelheden uiteenlopende gegevens kan verwerken.
Wat is DynamoDB?
AWS biedt services voor verschillende databasebehoeften, zoals Amazon RDS voor relationele databasesen DocumentDB voor documentdatabases zoals MongoDB. DynamoDB is een NoSQL-database voor het opslaan van gegevens in een sleutelwaardeformaat.
DynamoDB kan grote hoeveelheden gegevens verwerken in een gedistribueerde infrastructuur zonder concessies te doen aan de prestaties, duurzaamheid of betrouwbaarheid. Het biedt een flexibel model waarmee u eenvoudig gegevens kunt opslaan en opvragen, ongeacht of deze gestructureerd of ongestructureerd zijn.
U kunt DynamoDB gebruiken als database voor verschillende soorten toepassingen. U hebt er rechtstreeks toegang toe vanaf de AWS-webconsole en programmatisch via de AWS-CLI, of vanuit webapplicaties met behulp van de AWS-SDK.
Aan de slag met DynamoDB in Node.js
Er zijn veel tools voor het bouwen van backend-API's in Node.js en u bent vrij om de database voor uw API te kiezen wanneer u met een van deze tools werkt. Node.js biedt brede ondersteuning voor externe services, waaronder databases zoals AWS DynamoDB.
Het enige dat u nodig hebt om vanuit uw Node-app toegang te krijgen tot een AWS-service, is de client aws-sdk pakket voor die dienst. Om toegang te krijgen tot DynamoDB moet u bijvoorbeeld het klant-dynamodb pakket onder aws-sdk.
Voer deze opdracht uit in uw projectmap om het pakket te installeren:
npm install @aws-sdk/client-dynamodb
Na het installeren aws-sdk/client-dynamodb in uw Node.js-project moet u de regio van uw DynamoDB-tabel aan de configuratie toevoegen voordat u ermee communiceert. U doet dit bij het initialiseren van de DynamoDB-client.
Als u AWS-CLI al eerder op uw computer hebt geïnstalleerd en gebruikt, zijn de AWS-inloggegevens waarschijnlijk al in uw omgeving ingesteld en haalt de SDK uw waarden automatisch uit de omgeving.
Maar als je dat nog niet hebt gedaan, kun je naar de AWS Identiteitstoegangsbeheer (IAM) service in uw console en maak een nieuwe gebruiker aan. Nadat u de gebruiker heeft aangemaakt, kunt u een toegangssleutel-ID en een geheime sleutel krijgen, dit zijn uw persoonlijke inloggegevens.
Voeg deze referenties toe aan uw omgeving door de volgende terminalopdrachten voor uw platform uit te voeren:
Op Unix, Linux of macOS:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
Op Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
Op Windows (PowerShell):
$env: AWS_ACCESS_KEY_ID='your access key ID'
$env: AWS_SECRET_ACCESS_KEY='you secret access key'
Maak vervolgens, terug in uw Node.js-project, een nieuw bestand en geef het een naam dynamodb.js. Instantieer in dit bestand een nieuwe AWS DynamoDB-client met behulp van de volgende code:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')
const region = "us-east-1"// your preferred region
const client = new DynamoDB({ region })
Best makkelijk! AWS zorgt ervoor dat u geen van uw beveiligingsreferenties in uw code blootlegt, dus terwijl de code hierboven probeert de client aan te maken, leest deze eerst de toegangssleutel en geheime sleutel uit uw omgeving.
De nieuw gecreëerde cliënt Hiermee kunt u verschillende bewerkingen uitvoeren, zoals het maken van tabellen en het lezen en schrijven van gegevens.
DynamoDB is net als andere NoSQL-databases schemaloos, dus u kunt altijd op elk moment nieuwe attributen (velden) aan een tabel toevoegen. Dit is de reden waarom u alleen attributen hoeft toe te voegen die als primaire sleutels aan een DynamoDB-tabel zullen dienen wanneer u deze maakt.
Bekijk de volgende code die een nieuwe tabel maakt (Klant) in 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();
De Kenmerkdefinities In dit veld definieert u de belangrijkste kenmerken van de tabel en hun typen. De E-mail attribuut hier heeft type S wat betekent dat het veld een verwacht Snaar als zijn waarde. De drie beschikbare attribuuttypen zijn S, N, En B (String, Getal en Binair).
Je hebt de SleutelSchema om primaire sleutels te definiëren waarmee u items snel kunt vinden en ordenen. DynamoDB verwacht dat de attributen die u toevoegt bij het maken van de tabel sleutelattributen zijn, dus e-mail is hier de primaire sleutel. U moet het toevoegen aan het KeySchema en het specificeren Sleutel type (HASH).
De andere beschikbare KeyType-waarde is BEREIK die wordt gebruikt voor sorteersleutels. Sorteersleutels zijn handig in gevallen waarin u mogelijk gegevens met dezelfde HASH-sleutels in een tabel heeft, en u wilt dat ook Om ze te groeperen op basis van extra gegevens, zoals datum of kleur, kunt u van de extra gegevens een RANGE maken sleutel.
De derde belangrijke parameter in de bovenstaande code is de Ingerichte doorvoer. Hier definieert u het aantal lees- en schrijfbewerkingen dat DynamoDb per seconde op de tabel mag toestaan.
Wanneer u de bovenstaande code uitvoert, zou u uitvoer moeten krijgen die er als volgt uitziet:
Als u uw DynamoDB-tabellendashboard in de webconsole controleert, ziet u dat de tabel nog steeds wordt ingericht of de status heeft van actief al.
Houd altijd rekening met uw toepassingsbehoeften bij het specificeren van de LeesCapaciteitEenheden En Schrijfcapaciteiteenheden omdat een ongepaste waarde kan leiden tot prestatieproblemen of hoge factuurkosten voor uw account.
Zodra u zeker weet dat de tafel al actief is, kunt u er CRUD-bewerkingen op uitvoeren.
Hieronder volgen enkele codevoorbeelden die laten zien hoe u gegevens uit het Klant tafel.
-
Voeg gegevens toe aan de tabel. Om gegevens naar een tabel te schrijven, hebt u die van de klant nodig plaatsItem methode. Met de onderstaande code wordt een nieuwe klant toegevoegd aan de Klant tabel in DynamoDB.
De parameters object bevat de Tafel naam wat de tabel is waarnaar u schrijft, en de Item veld dat de gegevens bevat die u toevoegt, met hun specifieke typen. Let op de nieuwe velden die aanvankelijk niet in de tabel stonden, zo werkt DynamoDB flexibel. U kunt de gegevens in uw database als volgt in uw console bekijken: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)
-
Gegevens uit de tabel lezen. Met DynamoDB kunt u gegevens op verschillende manieren lezen. De SDK's scannen functie leest de hele tabel, while krijgItem leest alleen specifieke gegevens. Met de onderstaande code worden bijvoorbeeld alle klanten opgehaald:
Terwijl de volgende code de gebruiker ophaalt via de e-mailwaarde: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]")
-
Gegevens in de tabel bijwerken. Gebruik de SDK's om bestaande gegevens in een tabel bij te werken updateItem functie. De volgende code laat zien hoe u een specifieke record bijwerkt:
U kunt er ook voor kiezen om uw functie dynamisch te maken door update-expressies te bouwen op basis van uw updategegevens. Dankzij de flexibiliteit van DynamoDB kunt u elke bewerking volgens uw behoeften uitvoeren.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)
} -
Gegevens uit de tabel verwijderen. Om een record uit DynamoDB te verwijderen, hebt u de Verwijder item functie en de sleutel van het betreffende record. Zo implementeert u het:
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]")
Efficiënte applicaties bouwen met DynamoDB
Amazon Web Services blijft bloeien. Het biedt een toegankelijk platform dat u kunt gebruiken om efficiënte, veilige digitale oplossingen te leveren. DynamoDB is de perfecte keuze als u op zoek bent naar een database die u kunt gebruiken zonder dat u zich zorgen hoeft te maken over infrastructuur of beveiliging.
U bent nu uitgerust met alles wat u nodig heeft om aan de slag te gaan met DynamoDB in Node.js, en u kunt vol vertrouwen DynamoDB kiezen voor uw volgende Node.js-toepassing.