Document API
Кратко:
- YDB поддерживает Document API - HTTP API, совместимое с Amazon DynamoDB.
- Document API предоставляет низкоуровневый API для работы с таблицами и данными.
- Поддерживаются методы для работы с таблицами, элементами таблиц и транзакциями.
- API совместимо с AWS, что позволяет использовать AWS CLI и AWS SDK.
- Пример использования Document API: создание таблицы, запись данных, чтение данных и удаление таблицы.
- Стоимость обработки каждого документа рассчитывается на основе размера документа и количества запросов.
Document API
В бессерверном режиме работы YDB поддерживает Document API — HTTP API, совместимое с Amazon DynamoDB. Это низкоуровневый API для работы с таблицами и создания, чтения, изменения и удаления данных. С помощью этого API можно выполнять операции над документными таблицами, совместимыми с AWS DynamoDB.
Для работы с таблицами в Document API поддерживаются следующие методы:
CreateTable— создаёт таблицу.DeleteTable— удаляет таблицу.DescribeTable— возвращает информацию о таблице.DescribeTimeToLive— возвращает информацию о состоянии времени жизни (TTL) в указанной таблице.ListTables— возвращает список таблиц.UpdateTimeToLive— включает или отключает время жизни (TTL) для указанной таблицы.
Для работы с элементами таблиц поддерживаются следующие методы:
BatchGetItem— возвращает атрибуты элементов из нескольких таблиц.BatchWriteItem— записывает или удаляет элементы из таблиц.DeleteItem— удаляет элемент в таблице.GetItem— возвращает атрибуты элемента из одной таблицы.PutItem— перезаписывает элементы в таблице.Query— возвращает элементы из таблиц.Scan— возвращает элементы и атрибуты из таблицы.TransactGetItems— извлекает несколько элементов из таблиц.TransactWriteItems— синхронная операция записи.UpdateItem— обновляет элементы в таблице.
С подробным описанием сигнатур каждого метода вы можете познакомиться в справочнике API.
Совместимость API даёт возможность пользователю работать с YDB при помощи инструментов AWS, таких как утилиты командной строки AWS CLI и AWS SDK для всех языков программирования, а также переносить свои приложения из AWS DynamoDB в YDB.
Давайте пройдём базовый сценарий работы с данными: создадим таблицу, запишем в неё данные и прочитаем их.
Создайте базу данных YDB в бессерверном режиме.

Перейдите на вкладку Обзор созданной БД.

Сохраните значение эндпойнта, указанное в блоке Document API эндпоинт.
Для удобства сохраните значение эндпойнта в переменной окружения с помощью команды
export.
export ENDPOINT=<значение_endpoint>
Рекомендованным способом использования Document API являются AWS CLI и AWS SDK, с которыми вы познакомитесь в дальнейших уроках. Здесь же мы используем утилиту cURL как простой пример применения низкоуровневого HTTP API.
Выполните команду:
curl \
-H 'X-Amz-Target: DynamoDB_20120810.CreateTable' \
-H "Authorization: Bearer $(yc iam create-token)" \
-H "Content-Type: application/json" \
-d '{"TableName": "docapitest/series","AttributeDefinitions":[{"AttributeName": "series_id", "AttributeType": "N"},{"AttributeName": "title", "AttributeType": "S"}],"KeySchema":[{"AttributeName": "series_id", "KeyType": "HASH"},{"AttributeName": "title", "KeyType": "RANGE"}]}' \
$ENDPOINT
В консоли управления убедитесь, что таблица
series появилась в директории docapitest указанной базы.
Добавьте запись в базу с помощью следующей команды:
curl \
-H 'X-Amz-Target: DynamoDB_20120810.PutItem' \
-H "Authorization: Bearer $(yc iam create-token)" \
-H "Content-Type: application/json" \
-d '{"TableName": "docapitest/series", "Item": {"series_id": {"N": "1"}, "title": {"S": "IT Crowd"}, "series_info": {"S": "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris ODowd, Richard Ayoade, Katherine Parkinson, and Matt Berry."}, "release_date": {"S": "2006-02-03"}}}' \
$ENDPOINT
Прочитайте запись с помощью команды:
curl \
-H 'X-Amz-Target: DynamoDB_20120810.GetItem' \
-H "Authorization: Bearer $(yc iam create-token)" \
-H "Content-Type: application/json" \
-d '{"TableName": "docapitest/series", "Key": {"series_id":{"N":"1"}, "title":{"S":"IT Crowd"}}}' \
$ENDPOINT
Удалите созданную ранее таблицу.
curl \
-H 'X-Amz-Target: DynamoDB_20120810.DeleteTable' \
-H "Authorization: Bearer $(yc iam create-token)" \
-H "Content-Type: application/json" \
-d '{"TableName": "docapitest/series"}' \
$ENDPOINT
Мы показали вам, как работать с низкоуровневым HTTP API Amazon DynamoDB в YDB. В следующих уроках рассмотрим практические примеры работы с AWS CLI и AWS SDK, которые упрощают взаимодействие с базой данных.
Правила расчёта стоимости запроса через Document API
При работе через Document API стоимость обработки каждого документа равна стоимости единицы запроса в RU, умноженной на размер документа в блоках. Размер в блоках равен размеру в байтах, делённому на размер блока и округлённому в большую сторону. Запрос несуществующего документа приравнивается к чтению документа размером в 1 блок.
Если запрос обрабатывает несколько документов (например
BatchGetItem), итоговая стоимость равна сумме стоимостей по каждому документу. Операции со схемой данных, такие как CreateTable, DeleteTable, DescribeTable, ListTables, не тарифицируются. В таблице ниже приведён пример расчёта стоимости для различных вызовов Document API.