Amazon DynamoDB — это полностью управляемая служба базы данных NoSQL, обеспечивающая быструю и предсказуемую производительность с плавной масштабируемостью. Если вы создаете приложение Spring Boot, вы можете использовать DynamoDB в качестве хранилища данных.

В этой статье мы увидим, как выполнять операции CRUD (создание, чтение, обновление, удаление) над таблицами DynamoDB в Spring Boot.

Прежде чем мы начнем, убедитесь, что у вас есть следующие предварительные условия:

  • Аккаунт AWS
  • AWS CLI (интерфейс командной строки), установленный и настроенный на вашем компьютере
  • AWS SDK для Java, установленный в вашем проекте
  • Проект Spring Boot, настроенный с зависимостью DynamoDB.

Когда у вас есть эти предварительные условия, вы готовы начать писать операции CRUD для таблиц DynamoDB в Spring Boot.

Для начала вам нужно создать таблицу DynamoDB. Это можно сделать с помощью интерфейса командной строки AWS, консоли управления AWS или API DynamoDB. Для целей этой статьи мы будем использовать интерфейс командной строки AWS.

Откройте окно терминала и введите следующую команду, чтобы создать таблицу с первичным ключом «id»:

aws dynamodb create-table \
--table-name MyTable \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

Эта команда создает таблицу DynamoDB с именем «MyTable» с первичным ключом «id» и выделенной пропускной способностью 5 операций чтения и 5 операций записи в секунду.

Теперь, когда у нас настроена таблица DynamoDB, давайте посмотрим, как выполнять над ней операции CRUD с помощью Spring Boot.

Чтобы выполнять операции CRUD с таблицей DynamoDB в приложении Spring Boot, вам необходимо создать клиент DynamoDB. Для этого можно использовать следующий код:

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
    .withRegion(Regions.US_EAST_1)
    .build();
DynamoDB dynamoDB = new DynamoDB(client);
Table table = dynamoDB.getTable("MyTable");

Этот код создает клиент DynamoDB, который можно использовать для доступа к таблице DynamoDB.

Теперь, когда у нас есть клиент DynamoDB и ссылка на нашу таблицу, мы можем начать выполнять операции CRUD.

Создать элемент

Чтобы создать элемент в таблице, вы можете использовать следующий код:

Item item = new Item()
    .withPrimaryKey("id", "12345")
    .withString("name", "John")
    .withInt("age", 30);
table.putItem(item);

Этот код создает новый элемент с «id» «12345», «name» «John» и «age» 30 и добавляет его в таблицу «MyTable».

Читать элемент

Чтобы прочитать элемент из таблицы, вы можете использовать следующий код:

Item item = table.getItem("id", "12345");
String name = item.getString("name");
int age = item.getInt("age");

Этот код извлекает элемент с «id» «12345» из таблицы «MyTable» и считывает атрибуты «имя» и «возраст».

Обновить элемент

Чтобы обновить элемент в таблице, вы можете использовать следующий код:

Item item = new Item()
    .withPrimaryKey("id", "12345")
    .withString("name", "John")
    .withInt("age", 31);
table.putItem(item);

Этот код обновляет элемент с «id» «12345» в «MyTable».

Удалить пункт

Чтобы удалить элемент из таблицы, вы можете использовать следующий код:

DeleteItemSpec deleteItemSpec = new DeleteItemSpec().withPrimaryKey("id", "12345");
table.deleteItem(deleteItemSpec);

Этот код удаляет элемент с «id» «12345» из таблицы «MyTable».

Используя эти операции CRUD, вы можете эффективно управлять своими данными в таблице DynamoDB с помощью Spring Boot.

Не забывайте учитывать предоставленную пропускную способность вашей таблицы при выполнении этих операций, так как слишком много запросов на чтение или запись могут привести к регулированию.

В дополнение к этим основным операциям CRUD DynamoDB также предлагает более продвинутые функции, такие как вторичные индексы, транзакции и потоки. Вы можете узнать больше об этих функциях в документации DynamoDB.

Используя вместе DynamoDB и Spring Boot, вы можете создавать масштабируемые и надежные приложения, которые могут использовать преимущества мощных функций DynamoDB.