Základní informace
- DynamoDB, nabízená společností AWS, je výkonná NoSQL databáze, která zvládá rozsáhlá a různorodá data bez negativního dopadu na výkon, stálost a spolehlivost.
- Pro zahájení práce s DynamoDB v prostředí Node.js je nutné nainstalovat balíček `client-dynamodb` z knihovny `aws-sdk` a nakonfigurovat vaše přístupové údaje.
- DynamoDB usnadňuje tvorbu tabulek, zápis a čtení dat, aktualizaci existujících záznamů a jejich odstraňování pomocí specifických metod a parametrů klienta. Nabízí tak flexibilní a škálovatelné prostředí pro efektivní vývoj aplikací.
Vývoj moderních aplikací často vyžaduje kombinaci robustních programovacích jazyků a výkonných databázových systémů.
Jednou z klíčových služeb nabízených Amazon Web Services (AWS) je DynamoDB, nástroj, který dokáže zásadně proměnit způsob, jakým spravujeme data. Umožňuje rychlé a snadné zřízení databáze pro zpracování velkého množství různorodých informací.
Co je DynamoDB?
AWS nabízí škálu služeb pro různé databázové potřeby, včetně Amazon RDS pro relační databáze a DocumentDB pro dokumentové databáze, jako je MongoDB. DynamoDB se specializuje jako NoSQL databáze pro ukládání dat v klíč-hodnota formátu.
DynamoDB je navržena pro zpracování obrovských objemů dat v distribuovaném prostředí, aniž by došlo ke snížení výkonu, odolnosti nebo spolehlivosti. Nabízí flexibilní model, který zjednodušuje ukládání a dotazování dat, bez ohledu na to, zda jsou strukturovaná nebo nestrukturovaná.
DynamoDB je vhodná pro širokou škálu aplikací. Můžete k ní přistupovat přímo přes webovou konzoli AWS, programově pomocí AWS-CLI, nebo z webových aplikací za použití AWS-SDK.
První kroky s DynamoDB v Node.js
Node.js nabízí bohatou paletu nástrojů pro vytváření backendových API, a při vývoji s těmito nástroji je klíčové vybrat vhodnou databázi pro vaše API. Node.js má rozsáhlou podporu pro externí služby, včetně databází jako je AWS DynamoDB.
Pro přístup ke službám AWS z aplikace Node.js potřebujete klientský balíček `aws-sdk` pro konkrétní službu. Pro přístup k DynamoDB konkrétně je nutné nainstalovat balíček `client-dynamodb` z balíčku `aws-sdk`.
Nainstalujte balíček pomocí následujícího příkazu v adresáři vašeho projektu:
npm install @aws-sdk/client-dynamodb
Po instalaci `aws-sdk/client-dynamodb` do vašeho Node.js projektu je nezbytné přidat region vaší tabulky DynamoDB do konfigurace předtím, než s ní začnete pracovat. Toto se provádí při inicializaci klienta DynamoDB.
Pokud jste již dříve nainstalovali a používali AWS-CLI na svém počítači, je pravděpodobné, že máte přístupové údaje AWS již nastavené ve vašem prostředí, a SDK automaticky získá tyto údaje z vašeho prostředí.
Pokud však nemáte nastavené přístupové údaje, můžete přejít do služby AWS Identity Access Management (IAM) ve vaší konzoli a vytvořit nového uživatele. Po vytvoření uživatele získáte přístupový klíč a tajný klíč, které představují vaše osobní přístupové údaje.
Přidejte tyto údaje do vašeho prostředí pomocí následujících příkazů terminálu pro vaši platformu:
V systémech Unix, Linux nebo macOS:
export AWS_ACCESS_KEY_ID='váš přístupový klíč'
export AWS_SECRET_ACCESS_KEY='váš tajný klíč'
V systému Windows (CMD):
set AWS_ACCESS_KEY_ID='váš přístupový klíč'
set AWS_SECRET_ACCESS_KEY='váš tajný klíč'
V systému Windows (PowerShell):
$env:AWS_ACCESS_KEY_ID='váš přístupový klíč'
$env:AWS_SECRET_ACCESS_KEY='váš tajný klíč'
V projektu Node.js vytvořte nový soubor, například `dynamodb.js`. V tomto souboru vytvořte instanci nového klienta AWS DynamoDB pomocí následujícího kódu:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')const region = "us-east-1"
const client = new DynamoDB({ region })
Velmi jednoduché! AWS zajišťuje, že ve vašem kódu neodhalujete žádné vaše bezpečnostní údaje, takže při pokusu o vytvoření klienta, kód nejprve načte přístupový klíč a tajný klíč z vašeho prostředí.
Nově vytvořený klient umožňuje provádět různé operace, jako je vytváření tabulek a čtení a zápis dat.
DynamoDB je bez schématu, stejně jako ostatní NoSQL databáze, což znamená, že do tabulky můžete kdykoliv přidat nové atributy (pole). Proto je při vytváření tabulky DynamoDB nutné pouze definovat atributy, které budou sloužit jako primární klíče.
Podívejte se na následující kód, který vytvoří novou tabulku (zákazník) v 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();
V poli `AttributeDefinitions` definujete klíčové atributy tabulky a jejich datové typy. Atribut `Email` má datový typ „S“, což znamená, že se očekává řetězec. K dispozici jsou tři datové typy atributů: S (String), N (Number) a B (Binary).
`KeySchema` se používá k definování primárních klíčů, které umožňují rychlé vyhledávání a organizaci dat. DynamoDB vyžaduje, aby atributy, které přidáte při vytváření tabulky, byly klíčovými atributy. V tomto případě je primárním klíčem atribut `Email`. Proto ho musíte přidat do `KeySchema` a určit jeho `KeyType` jako „HASH“.
Další dostupná hodnota pro `KeyType` je „RANGE“, která se používá pro klíče řazení. Třídicí klíče jsou užitečné, pokud máte data se stejnými HASH klíči a chcete je seskupit podle dalších kritérií, jako je datum nebo barva. Tato extra data se pak používají jako klíč typu „RANGE“.
Třetím důležitým parametrem ve výše uvedeném kódu je `ProvisionedThroughput`, kde definujete počet čtení a zápisů za sekundu, které má DynamoDB povolit pro danou tabulku.
Po spuštění výše uvedeného kódu byste měli dostat výstup, který je podobný následujícímu:
Po kontrole řídicího panelu tabulek DynamoDB ve webové konzoli zjistíte, že tabulka se buď stále zřizuje, nebo je již v aktivním stavu.
Při nastavování hodnot `ReadCapacityUnits` a `WriteCapacityUnits` vždy zvažte požadavky vaší aplikace, protože nevhodná hodnota může vést k problémům s výkonem nebo k vysokým nákladům za fakturaci vašeho účtu.
Jakmile máte jistotu, že je tabulka aktivní, můžete na ní provádět operace CRUD.
Následující příklady kódu ilustrují, jak zapisovat a číst data z tabulky `Customer`:
-
Zápis dat do tabulky. Pro zápis dat do tabulky se používá metoda `putItem` klienta. Následující kód přidá nového zákazníka do tabulky `Customer` v 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)
Objekt `params` obsahuje `TableName`, která udává, do které tabulky se zapisuje, a pole `Item`, které obsahuje zapisovaná data včetně jejich typů. Všimněte si nových polí, která nebyla původně v tabulce – takto flexibilně DynamoDB funguje. Data v databázi můžete prohlížet v konzoli následujícím způsobem:
-
Čtení dat z tabulky. DynamoDB umožňuje číst data různými způsoby. Metoda `scan` SDK čte celou tabulku, zatímco `getItem` čte pouze specifická data. Následující kód načte všechny zákazníky:
const getAllCustomers = async () => {
const params = {
TableName: "Customer"
}const customers = await client.scan(params)
console.log(customers)
}Zatímco následující kód získá uživatele na základě jeho emailu:
const getCustomerByEmail = async (email) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
}
}const customer = await client.getItem(params)
console.log(customer)
}getCustomerByEmail("[email protected]")
-
Aktualizace dat v tabulce. Pro aktualizaci existujících dat v tabulce se používá funkce `updateItem` SDK. Následující kód ukazuje, jak aktualizovat konkrétní záznam:
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)
}Můžete také vytvořit dynamické aktualizační výrazy z vašich dat pro aktualizaci. Flexibilita DynamoDB vám tak umožňuje provádět veškeré operace podle vašich požadavků.
-
Odstranění dat z tabulky. Pro smazání záznamu z DynamoDB je potřebná funkce `deleteItem` a klíč specifického záznamu. Zde je postup implementace:
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]")
Vývoj efektivních aplikací s DynamoDB
Amazon Web Services nadále roste a nabízí platformu pro poskytování efektivních a bezpečných digitálních řešení. DynamoDB je ideální volbou, pokud hledáte databázi, kterou můžete používat bez obav o infrastrukturu nebo zabezpečení.
Nyní jste vybaveni vším potřebným, abyste mohli začít s DynamoDB v Node.js, a můžete s jistotou používat DynamoDB pro vaši příští aplikaci Node.js.