Создайте этот пример приложения, чтобы узнать, насколько простыми могут быть базы данных.
Ключевые выводы
- DynamoDB — это мощная база данных NoSQL, предлагаемая AWS, которая может обрабатывать большие объемы разнообразных данных без ущерба для производительности, долговечности и надежности.
- Чтобы начать работу с DynamoDB в Node.js, вам необходимо установить пакет client-dynamodb из aws-sdk и настроить свои учетные данные.
- DynamoDB позволяет легко создавать таблицы, записывать и читать данные, обновлять и удалять записи, используя методы и параметры клиента. Он предлагает гибкость и масштабируемость для эффективной разработки приложений.
Большая часть разработки современных приложений требует сочетания надежных языков программирования и мощных баз данных.
Одним из решений, предлагаемых Amazon Web Services (AWS), является DynamoDB, инструмент, который может произвести революцию в управлении данными. Используя его, вы можете быстро подготовить базу данных для обработки больших объемов разнообразных данных.
Что такое DynamoDB?
AWS предлагает услуги для различных потребностей баз данных, например Amazon RDS для реляционных баз данныхи DocumentDB для базы данных документов, такие как MongoDB. DynamoDB — это база данных NoSQL для хранения данных в формате «ключ-значение».
DynamoDB может обрабатывать большие объемы данных в распределенной инфраструктуре без ущерба для производительности, долговечности и надежности. Он предлагает гибкую модель, позволяющую легко хранить и запрашивать данные, как структурированные, так и неструктурированные.
Вы можете использовать DynamoDB в качестве базы данных для различных типов приложений. Вы можете получить к нему доступ непосредственно из веб-консоли AWS и программно через AWS-CLI или из веб-приложений с помощью AWS-SDK.
Начало работы с DynamoDB в Node.js
Есть много инструменты для создания серверных API в Node.js и вы можете свободно выбирать базу данных для своего API при работе с любым из этих инструментов. Node.js обеспечивает широкую поддержку внешних сервисов, включая такие базы данных, как AWS DynamoDB.
Все, что вам нужно для доступа к сервису AWS из вашего приложения Node, — это клиент. aws-sdk пакет для этой услуги. Например, чтобы получить доступ к DynamoDB, вам необходимо установить клиент-dynamodb пакет под aws-sdk.
Запустите эту команду в каталоге вашего проекта, чтобы установить пакет:
npm install @aws-sdk/client-dynamodb
После установки aws-sdk/клиент-dynamodb в вашем проекте Node.js вам необходимо добавить регион таблицы DynamoDB в конфигурацию, прежде чем взаимодействовать с ней. Вы сделаете это при инициализации клиента DynamoDB.
Если вы уже установили и использовали AWS-CLI на своем компьютере, вероятно, в вашей среде уже установлены учетные данные AWS, и SDK автоматически получит ваши значения из среды.
Но если у вас его нет, вы можете отправиться в Управление доступом к идентификационным данным AWS (IAM) service в вашей консоли и создайте нового пользователя. После создания пользователя вы можете получить идентификатор ключа доступа и секретный ключ, которые являются вашими личными учетными данными.
Добавьте эти учетные данные в свою среду, выполнив следующие команды терминала для вашей платформы:
В Unix, Linux или macOS:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
В Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
В Windows (PowerShell):
$env: AWS_ACCESS_KEY_ID='your access key ID'
$env: AWS_SECRET_ACCESS_KEY='you secret access key'
Затем вернитесь в проект Node.js и создайте новый файл и назовите его. dynamodb.js. В этом файле создайте экземпляр нового клиента AWS DynamoDB, используя следующий код:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')
const region = "us-east-1"// your preferred region
const client = new DynamoDB({ region })
Довольно просто! AWS следит за тем, чтобы вы не раскрывали какие-либо учетные данные безопасности в своем коде, поэтому, пока код выше пытается создать клиент, он сначала считывает ключ доступа и секретный ключ из вашей среды.
Недавно созданный клиент позволяет выполнять различные операции, такие как создание таблиц, чтение и запись данных.
DynamoDB, как и другие базы данных NoSQL, не имеет схемы, поэтому вы всегда можете добавить в таблицу новые атрибуты (поля) в любой момент. Вот почему вам нужно добавлять только атрибуты, которые будут служить первичными ключами к таблице DynamoDB при ее создании.
Посмотрите следующий код, который создает новую таблицу (Клиент) в 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();
Определения атрибутов В этом поле вы определяете ключевые атрибуты таблицы и их типы. Электронная почта атрибут здесь имеет тип С что означает, что поле ожидает Нить как его ценность. Три доступных типа атрибутов: С, Н, и Б (Строка, число и двоичный код).
Вам нужно Ключевая схема определить первичные ключи, которые помогают быстро находить и упорядочивать элементы. DynamoDB ожидает, что атрибуты, которые вы добавляете при создании таблицы, будут ключевыми атрибутами, поэтому электронная почта здесь является первичным ключом. Вы должны добавить его в KeySchema и указать его Тип ключа (ХЕШ).
Другое доступное значение KeyType: ДИАПАЗОН который используется для ключей сортировки. Ключи сортировки полезны в тех случаях, когда в таблице могут быть данные с одинаковыми ключами HASH, и вы хотите чтобы сгруппировать их по некоторым дополнительным данным, таким как дата или цвет, вы можете сделать дополнительные данные ДИАПАЗОНОМ. ключ.
Третий важный параметр в приведенном выше коде — это Подготовленная пропускная способность. Здесь вы определяете количество операций чтения и записи, которые DynamoDb должен разрешить в таблице в секунду.
Когда вы запустите приведенный выше код, вы должны получить вывод, который выглядит следующим образом:
Если вы проверите панель управления таблицами DynamoDB в веб-консоли, вы увидите, что таблица либо все еще подготавливается, либо имеет статус активный уже.
Всегда учитывайте потребности вашего приложения при указании ЧтениеКапаситиЮнитс и WriteCapacityUnits поскольку неподходящее значение может привести к проблемам с производительностью или высоким расходам на выставление счетов в вашей учетной записи.
Убедившись, что таблица уже активна, вы можете выполнять с ней операции CRUD.
Ниже приведены примеры кода, показывающие, как записывать и считывать данные из Клиент стол.
-
Добавляем данные в таблицу. Для записи данных в таблицу необходим клиентский putItem метод. Код ниже добавляет нового клиента в Клиент таблица в DynamoDB.
параметры объект содержит ИмяТаблицы в какую таблицу вы пишете, и Элемент поле, содержащее добавляемые вами данные с их конкретными типами. Обратите внимание на новые поля, которых изначально не было в таблице: именно так 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)
-
Считать данные из таблицы. DynamoDB позволяет читать данные различными способами. SDK сканировать функция считывает всю таблицу, а getItem читает только определенные данные. Например, приведенный ниже код получает всех клиентов:
А следующий код получает пользователя по значению адреса электронной почты: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]")
-
Обновить данные в таблице. Чтобы обновить существующие данные в таблице, используйте SDK обновлениеитем функция. Следующий код демонстрирует, как обновить определенную запись:
Вы также можете сделать свою функцию динамической, создав выражения обновления на основе данных обновления. Гибкость DynamoDB позволяет вам выполнять каждую операцию в соответствии с вашими потребностями.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)
} -
Удалить данные из таблицы. Чтобы удалить запись из DynamoDB, вам понадобится удалить пункт функцию и ключ конкретной записи. Вот как это реализовать:
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]")
Создание эффективных приложений с помощью DynamoDB
Amazon Web Services продолжает процветать. Он предоставляет доступную платформу, которую вы можете использовать для предоставления эффективных и безопасных цифровых решений. DynamoDB — идеальный выбор, если вы ищете базу данных, которую можно использовать, не беспокоясь об инфраструктуре и безопасности.
Теперь у вас есть все необходимое для начала работы с DynamoDB в Node.js, и вы можете с уверенностью выбрать DynamoDB для своего следующего приложения Node.js.