Utwórz tę przykładową aplikację, aby przekonać się, jak proste mogą być bazy danych.
Kluczowe dania na wynos
- DynamoDB to potężna baza danych NoSQL oferowana przez AWS, która może obsługiwać duże ilości różnorodnych danych bez uszczerbku dla wydajności, trwałości i niezawodności.
- Aby rozpocząć pracę z DynamoDB w Node.js, musisz zainstalować pakiet client-dynamodb z aws-sdk i skonfigurować swoje poświadczenia.
- DynamoDB umożliwia łatwe tworzenie tabel, zapisywanie i odczytywanie danych, aktualizację rekordów i usuwanie rekordów przy użyciu metod i parametrów klienta. Oferuje elastyczność i skalowalność dla efektywnego tworzenia aplikacji.
Duża część tworzenia nowoczesnych aplikacji wymaga połączenia solidnych języków programowania i wydajnych baz danych.
Jednym z rozwiązań oferowanych przez Amazon Web Services (AWS) jest DynamoDB, narzędzie, które może zrewolucjonizować zarządzanie Twoimi danymi. Dzięki niemu można szybko udostępnić bazę danych do obsługi dużej ilości różnorodnych danych.
Co to jest DynamoDB?
AWS oferuje usługi dla różnych potrzeb baz danych, np Amazon RDS dla relacyjnych baz danychi DocumentDB dla bazy danych dokumentów, takie jak MongoDB. DynamoDB to baza danych NoSQL do przechowywania danych w formacie klucz-wartość.
DynamoDB może obsługiwać duże ilości danych w rozproszonej infrastrukturze bez uszczerbku dla wydajności, trwałości i niezawodności. Oferuje elastyczny model, umożliwiający łatwe przechowywanie i wysyłanie zapytań do danych, niezależnie od tego, czy są one ustrukturyzowane, czy nie.
Możesz używać DynamoDB jako bazy danych dla różnych typów aplikacji. Dostęp do niego można uzyskać bezpośrednio z konsoli internetowej AWS oraz programowo poprzez AWS-CLI lub z aplikacji internetowych korzystających z AWS-SDK.
Pierwsze kroki z DynamoDB w Node.js
Jest wiele narzędzia do budowy backendowych API w Node.js i możesz wybrać bazę danych dla swojego API podczas pracy z dowolnym z tych narzędzi. Node.js zapewnia szeroką obsługę usług zewnętrznych, w tym baz danych takich jak AWS DynamoDB.
Wszystko, czego potrzebujesz, aby uzyskać dostęp do usługi AWS z aplikacji Node, to klient aws-sdk pakiet tej usługi. Na przykład, aby uzyskać dostęp do DynamoDB, musisz zainstalować klient-dynamodb pakiet pod aws-sdk.
Uruchom tę komendę w katalogu projektu, aby zainstalować pakiet:
npm install @aws-sdk/client-dynamodb
Po zainstalowaniu aws-sdk/klient-dynamodb w projekcie Node.js musisz dodać region tabeli DynamoDB do konfiguracji, zanim zaczniesz z nią współdziałać. Zrobisz to podczas inicjowania klienta DynamoDB.
Jeśli już wcześniej instalowałeś i korzystałeś z AWS-CLI na swoim komputerze, prawdopodobnie masz już ustawione poświadczenia AWS w swoim środowisku, a SDK automatycznie pobierze Twoje wartości ze środowiska.
Ale jeśli nie, możesz udać się do Zarządzanie dostępem do tożsamości AWS (IAM) service w konsoli i utwórz nowego użytkownika. Po utworzeniu użytkownika możesz uzyskać identyfikator klucza dostępu i tajny klucz, które są Twoimi osobistymi danymi uwierzytelniającymi.
Dodaj te poświadczenia do swojego środowiska, uruchamiając następujące polecenia terminala dla swojej platformy:
W systemie Unix, Linux lub macOS:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
W systemie Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
W systemie Windows (PowerShell):
$env: AWS_ACCESS_KEY_ID='your access key ID'
$env: AWS_SECRET_ACCESS_KEY='you secret access key'
Następnie wróć do projektu Node.js i utwórz nowy plik i nadaj mu nazwę dynamodb.js. W tym pliku utwórz instancję nowego klienta AWS DynamoDB, używając następującego kodu:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')
const region = "us-east-1"// your preferred region
const client = new DynamoDB({ region })
Dość proste! AWS upewnia się, że nie ujawniasz żadnych danych uwierzytelniających w swoim kodzie, więc podczas wykonywania kodu powyżej próbuje utworzyć klienta, najpierw odczytuje klucz dostępu i tajny klucz z twojego środowiska.
Nowo utworzone klient umożliwia wykonywanie różnych operacji, takich jak tworzenie tabel oraz odczytywanie i zapisywanie danych.
DynamoDB, podobnie jak inne bazy danych NoSQL, nie wymaga schematu, więc zawsze możesz w dowolnym momencie dodać nowe atrybuty (pola) do tabeli. Dlatego podczas jej tworzenia wystarczy dodać tylko atrybuty, które będą służyć jako klucze podstawowe do tabeli DynamoDB.
Sprawdź następujący kod, który tworzy nową tabelę (Klient) w 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();
The Definicje atrybutów pole służy do definiowania kluczowych atrybutów tabeli i ich typów. The E-mail atrybut tutaj ma typ S co oznacza, że pole oczekuje a Strunowy jako jego wartość. Dostępne są trzy typy atrybutów S, N, I B (Ciąg, liczba i plik binarny).
Potrzebujesz Schemat klucza do definiowania kluczy podstawowych, które pomagają szybko znajdować i porządkować elementy. DynamoDB oczekuje, że atrybuty dodane podczas tworzenia tabeli będą atrybutami kluczowymi, dlatego kluczem podstawowym jest tutaj e-mail. Musisz dodać go do KeySchema i określić jego Typ klucza (HASZYSZ).
Inną dostępną wartością KeyType jest ZAKRES który jest używany do kluczy sortowania. Klucze sortowania są przydatne w przypadkach, gdy możesz mieć dane z tymi samymi kluczami HASH w tabeli i chcesz aby pogrupować je według dodatkowych danych, takich jak data lub kolor, możesz ustawić dodatkowe dane jako ZAKRES klucz.
Trzecim ważnym parametrem w powyższym kodzie jest Zapewniona przepustowość. W tym miejscu definiujesz liczbę odczytów i zapisów, na które DynamoDb ma zezwalać w tabeli na sekundę.
Po uruchomieniu powyższego kodu powinieneś otrzymać dane wyjściowe wyglądające tak:
Jeśli sprawdzisz pulpit nawigacyjny tabel DynamoDB w konsoli internetowej, zobaczysz, że tabela jest nadal udostępniana lub ma status aktywny już.
Zawsze bierz pod uwagę potrzeby aplikacji podczas określania Przeczytaj Jednostki pojemności I Zapisz jednostki pojemności ponieważ niewłaściwa wartość może prowadzić do problemów z wydajnością lub wysokich kosztów rozliczeń na Twoim koncie.
Kiedy już będziesz mieć pewność, że tabela jest już aktywna, możesz wykonać na niej operacje CRUD.
Poniżej przedstawiono kilka przykładów kodu pokazujących, jak zapisywać i odczytywać dane z pliku Klient tabela.
-
Dodaj dane do tabeli. Aby zapisać dane do tabeli, potrzebujesz danych klienta umieścićprzedmiot metoda. Poniższy kod dodaje nowego klienta do Klient tabela w DynamoDB.
The parametry obiekt zawiera Nazwa tabeli do której tabeli piszesz, oraz Przedmiot pole zawierające dodawane dane wraz z ich określonymi typami. Zwróć uwagę na nowe pola, których początkowo nie było w tabeli. Dzięki temu DynamoDB działa elastycznie. Możesz przeglądać dane w swojej bazie danych w konsoli w następujący sposób: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)
-
Odczytaj dane z tabeli. DynamoDB umożliwia odczytywanie danych na różne sposoby. SDK skanowanie funkcja czyta całą tabelę, podczas gdy Zdobądź przedmiot czyta tylko określone dane. Na przykład poniższy kod pobiera wszystkich klientów:
Poniższy kod pobiera użytkownika według wartości adresu e-mail: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]")
-
Zaktualizuj dane w tabeli. Aby zaktualizować istniejące dane w tabeli, użyj pakietu SDK aktualizacja elementu funkcjonować. Poniższy kod ilustruje sposób aktualizacji określonego rekordu:
Możesz także nadać swojej funkcji dynamikę, budując wyrażenia aktualizacji na podstawie danych aktualizacji. Elastyczność DynamoDB pozwala na obsługę każdej operacji zgodnie z Twoimi potrzebami.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)
} -
Usuń dane z tabeli. Aby usunąć rekord z DynamoDB, potrzebujesz pliku Usuń przedmiot funkcję i klucz konkretnego rekordu. Oto jak to wdrożyć:
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]")
Tworzenie wydajnych aplikacji przy użyciu DynamoDB
Usługi internetowe Amazon nadal się rozwijają. Zapewnia dostępną platformę, za pomocą której można dostarczać wydajne i bezpieczne rozwiązania cyfrowe. DynamoDB to idealny wybór, jeśli szukasz bazy danych, którą możesz uruchomić bez martwienia się o infrastrukturę i bezpieczeństwo.
Masz teraz wszystko, czego potrzebujesz, aby rozpocząć pracę z DynamoDB w Node.js i możesz śmiało wybrać DynamoDB do swojej następnej aplikacji Node.js.