Работа с DynamoDB из aws-cli
Примеров работы из aws-cli с DynamoDB кот наплакал, особенно, когда нужны простые вещи, но выходящие за рамки примеров из документации.
create-table
Создадим простенькую таблицу для условного Jenkins, куда будем писать для каждого проекта (
Здесь и дальше предполагается, что настроен
aws dynamodb create-table \
put-item
Запишем в таблицу значение для условного проекта
date +%s
Получение
Сделаем выполнение сразу из строки, а не через отдельный файл для JSON (из-за этого не получится разбить строчку обратным слэшем - поэтому получится длинная):
aws dynamodb put-item --table-name jenkins --item
Переменных добавлено сразу много разных и больше условно, чисто для примера и чтобы удобней выбрать, удалив лишние.
update-item
Обновим билд
aws dynamodb update-item --table-name jenkins --key
...продолжение следует
#DynamoDB #aws_cli
Примеров работы из aws-cli с DynamoDB кот наплакал, особенно, когда нужны простые вещи, но выходящие за рамки примеров из документации.
create-table
Создадим простенькую таблицу для условного Jenkins, куда будем писать для каждого проекта (
jenkinsProject) свои переменные для каждого билда (buildNumber). Для уменьшения стоимости (хоть и так будет около нуля) вместо дефолтного режима (PROVISIONED) сразу включим (PAY_PER_REQUEST).Здесь и дальше предполагается, что настроен
~/.aws/config , иначе к каждому запросу добавляем регион --region eu-west-1 (и/или --profile my-profile)aws dynamodb create-table \
--table-name jenkins \
--attribute-definitions \
AttributeName=jenkinsProject,AttributeType=S \
AttributeName=buildNumber,AttributeType=N \
--key-schema \
AttributeName=jenkinsProject,KeyType=HASH \
AttributeName=buildNumber,KeyType=RANGE \
--billing-mode PAY_PER_REQUEST
put-item
Запишем в таблицу значение для условного проекта
aws-notes и билда номер 1 из ветки feature-1. Для получения текущего timestamp вручную выполним:date +%s
1578575096 Получение
timestamp можно добавить и сразу в команду, но так наглядней.Сделаем выполнение сразу из строки, а не через отдельный файл для JSON (из-за этого не получится разбить строчку обратным слэшем - поэтому получится длинная):
aws dynamodb put-item --table-name jenkins --item
'{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"}, "imageTag": {"S": "feature-1.build-1"}, "imageRepository": {"S": "123166313456.dkr.ecr.eu-west-1.amazonaws.com/aws-notes"}, "date": {"S": "2020-01-09 13:04"}, "timestamp": {"N": "1569486943"}, "branch": {"S": "feature-1"} }'Переменных добавлено сразу много разных и больше условно, чисто для примера и чтобы удобней выбрать, удалив лишние.
update-item
Обновим билд
1, исправив в нём тэг и ветку (заменим 1 на 1а):aws dynamodb update-item --table-name jenkins --key
'{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"} }' --update-expression "SET #T = :t, #B = :b" --expression-attribute-names '{ "#T":"imageTag", "#B":"branch" }' --expression-attribute-values '{ ":t": {"S": "feature-1a.build-1"}, ":b": {"S": "feature-1a"} }'...продолжение следует
#DynamoDB #aws_cli
Работа с DynamoDB из aws-cli
scan
Предположим, в таблице много билдов разных проектов. Получим все записи таблицы с ограничением максимум 100 значений.
aws dynamodb scan --table-name jenkins
Это будут все проекты, можно вывести лишь нужный, например,
aws dynamodb scan --table-name jenkins --query
query
Сделать выборку по проекту
aws dynamodb query --table-name jenkins --max-items 100 --key-condition-expression
Как найти последнее значение билда (не обязательно совпадающее с количеством записей)? Для этого сделаем реверсивную выборку и получим последний элемент, выделив его с помощью #query и сделав таблицу:
aws dynamodb query --table-name jenkins --key-condition-expression
delete-item
Удалим билд
aws dynamodb delete-item --table-name jenkins --key
delete-table
Удалим таблицу .
aws dynamodb delete-table --table-name jenkins
#DynamoDB #aws_cli
scan
Предположим, в таблице много билдов разных проектов. Получим все записи таблицы с ограничением максимум 100 значений.
aws dynamodb scan --table-name jenkins
--max-items 100Это будут все проекты, можно вывести лишь нужный, например,
aws-notes с помощью #query:aws dynamodb scan --table-name jenkins --query
'Items[?jenkinsProject.S==`aws-notes`]'query
Сделать выборку по проекту
jenkinsProject - получить все билды:aws dynamodb query --table-name jenkins --max-items 100 --key-condition-expression
"jenkinsProject = :jp" --expression-attribute-values '{":jp": { "S": "aws-notes" } }'Как найти последнее значение билда (не обязательно совпадающее с количеством записей)? Для этого сделаем реверсивную выборку и получим последний элемент, выделив его с помощью #query и сделав таблицу:
aws dynamodb query --table-name jenkins --key-condition-expression
"jenkinsProject = :jp" --expression-attribute-values '{":jp": { "S": "aws-notes" } }' --no-scan-index-forward --max-items 1 --query Items[].buildNumber.N[] --output table-------
|Query|
+-----+
| 3 |
+-----+
delete-item
Удалим билд
1 из таблицы:aws dynamodb delete-item --table-name jenkins --key
'{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"} }'delete-table
Удалим таблицу .
aws dynamodb delete-table --table-name jenkins
#DynamoDB #aws_cli
Single-Table Design with DynamoDB
Хорошая разъясняющая статья по #best_practices архитектуры для DynamoDB:
https://www.alexdebrie.com/posts/dynamodb-single-table/
Подробно описаны свойства и преимущества single-table архитектуры, а также случаи, когда это неуместно.
#DynamoDB #design
Хорошая разъясняющая статья по #best_practices архитектуры для DynamoDB:
https://www.alexdebrie.com/posts/dynamodb-single-table/
Подробно описаны свойства и преимущества single-table архитектуры, а также случаи, когда это неуместно.
#DynamoDB #design
Alexdebrie
The What, Why, and When of Single-Table Design with DynamoDB | DeBrie Advisory
AWS recommends using just a single DynamoDB table for your entire application. In this post, learn why you would do that and the few times you shouldn't.
NoSQL Workbench for Amazon DynamoDB:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/workbench.html
Клиентское приложение для разработчиков, чтобы работать с DynamoDB. Есть версия под MacOS и Windows (линуксоиды в пролёте :/ ).
Описание функционала NoSQL Workbench (ещё когда оно было в
https://aws.amazon.com/blogs/aws/nosql-workbench-for-amazon-dynamodb-available-in-preview/
#DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/workbench.html
Клиентское приложение для разработчиков, чтобы работать с DynamoDB. Есть версия под MacOS и Windows (линуксоиды в пролёте :/ ).
Описание функционала NoSQL Workbench (ещё когда оно было в
Preview):https://aws.amazon.com/blogs/aws/nosql-workbench-for-amazon-dynamodb-available-in-preview/
#DynamoDB
Пример
Как-то писал, что подобных конкретных примеров по DynamoDB мало, потому стоит порекомендовать хороший сайт по ней:
https://www.dynamodbguide.com
В частности, добавлю, что его автор, Alex DeBrie (AWS Data Hero), недавно выпустил полноценную книжку:
https://www.dynamodbbook.com/
Её шибко хвалят известные господа в данной области, так что наверняка стоит прочитать, если это ваша тема или у вас много DynamoDB в проекте.
#DynamoDB #aws_cli
query в aws cli с фильтрацией:aws dynamodb query --table-name jenkins \--key-condition-expression "Project = :jp" \--filter-expression "#repo = :ecr" \--expression-attribute-names '{"#repo": "Repo"}' \--expression-attribute-values '{":jp": { "S": "my-service" },":ecr": { "S": "888888888888.dkr.ecr.eu-central-1.amazonaws.com/my-repo" }}'Как-то писал, что подобных конкретных примеров по DynamoDB мало, потому стоит порекомендовать хороший сайт по ней:
https://www.dynamodbguide.com
В частности, добавлю, что его автор, Alex DeBrie (AWS Data Hero), недавно выпустил полноценную книжку:
https://www.dynamodbbook.com/
Её шибко хвалят известные господа в данной области, так что наверняка стоит прочитать, если это ваша тема или у вас много DynamoDB в проекте.
#DynamoDB #aws_cli
Forwarded from Sysadmin Tools 🇺🇦
Comparing CQL and the DynamoDB API
https://www.scylladb.com/2020/05/12/comparing-cql-and-the-dynamodb-api/
#scylla #scylladb #dynamodb #cassandra #nosql
https://www.scylladb.com/2020/05/12/comparing-cql-and-the-dynamodb-api/
#scylla #scylladb #dynamodb #cassandra #nosql
Отправляем данные из DynamoDB в Slack:
https://github.com/vbudilov/dynamodb-to-slack
#DynamoDB #Slack
https://github.com/vbudilov/dynamodb-to-slack
#DynamoDB #Slack
Нативный экспорт DynamoDB на S3 для аналитики:
https://aws.amazon.com/blogs/aws/new-export-amazon-dynamodb-table-data-to-data-lake-amazon-s3/
#DynamoDB
https://aws.amazon.com/blogs/aws/new-export-amazon-dynamodb-table-data-to-data-lake-amazon-s3/
#DynamoDB
Amazon
New – Export Amazon DynamoDB Table Data to Your Data Lake in Amazon S3, No Code Writing Required | Amazon Web Services
Hundreds of thousands of AWS customers have chosen Amazon DynamoDB for mission-critical workloads since its launch in 2012. DynamoDB is a nonrelational managed database that allows you to store a virtually infinite amount of data and retrieve it with single…
В консоли DynamoDB появился PartiQL редактор (см. картинку).
PartiQL - язык, запиленный Амазоном в 2019-м году для возможности работать в SQL-подобном стиле с данными любого формата:
https://aws.amazon.com/ru/blogs/opensource/announcing-partiql-one-query-language-for-all-your-data/
Или на русском на Хабре:
https://habr.com/ru/news/t/463253/
Кроме того, теперь любые изменения таблиц DynamoDB можно стримить в Kinesis.
#DynamoDB
PartiQL - язык, запиленный Амазоном в 2019-м году для возможности работать в SQL-подобном стиле с данными любого формата:
https://aws.amazon.com/ru/blogs/opensource/announcing-partiql-one-query-language-for-all-your-data/
Или на русском на Хабре:
https://habr.com/ru/news/t/463253/
Кроме того, теперь любые изменения таблиц DynamoDB можно стримить в Kinesis.
#DynamoDB
Как удалить большой объём данных из DynamoDB:
https://medium.com/analytics-vidhya/how-to-delete-huge-data-from-dynamodb-table-f3be586c011c
Если у вас терабайты данных, то в зависимости от ситуации есть 4 варианта:
1️⃣
2️⃣ update
3️⃣
4️⃣
#DynamoDB
https://medium.com/analytics-vidhya/how-to-delete-huge-data-from-dynamodb-table-f3be586c011c
Если у вас терабайты данных, то в зависимости от ситуации есть 4 варианта:
1️⃣
drop & re-create (2-4 минуты)2️⃣ update
TTL column (в течение 2 суток)3️⃣
delete-item (тысячи записей в минуту)4️⃣
batch-write-item (десятки тысяч записей в минуту)#DynamoDB
Medium
How to delete huge data from DynamoDB table?
Four approaches to delete huge data from DynamoDB tables, Delete using delete-item & batch-write-item, Updating TTL & drop and recreate it.
Single-table design для DynamoDB:
https://aws.amazon.com/blogs/compute/creating-a-single-table-design-with-amazon-dynamodb/
#DynamoDB
https://aws.amazon.com/blogs/compute/creating-a-single-table-design-with-amazon-dynamodb/
This blog post uses the Alleycat racing application to explain the benefits of a single-table DynamoDB table. It also shows how to approach modeling data access requirements in a DynamoDB table.#DynamoDB
Amazon
Creating a single-table design with Amazon DynamoDB | Amazon Web Services
This post looks at implementing common relational database patterns using DynamoDB. Instead of using multiple tables, the single-table design pattern can use adjacency lists to provide many-to-many relational functionality.
DynamoDB
https://aws.amazon.com/blogs/aws/new-dynamodb-table-class-save-up-to-60-in-your-dynamodb-costs/
Отличная возможность сэкономить в два с половиной раза на стоимости редко используемых объёмных таблиц DynamoDB.
Важно отметить, что данный тариф для большого объёма данных, ибо на малых и часто востребованных данных можно лишь потерять, т.к. запросы записи-чтения дороже, а первые 25 ГБ не бесплатны для нового тарифа
DynamoDB Standard table class
▪️ First 25 GB stored per month is free using the DynamoDB Standard table class
▪️ $0.25 per GB-month thereafter
DynamoDB Standard-Infrequent Access (DynamoDB
▪️ $0.10 per GB-month
#DynamoDB #cost_optimization
Standard-IA:https://aws.amazon.com/blogs/aws/new-dynamodb-table-class-save-up-to-60-in-your-dynamodb-costs/
Отличная возможность сэкономить в два с половиной раза на стоимости редко используемых объёмных таблиц DynamoDB.
Важно отметить, что данный тариф для большого объёма данных, ибо на малых и часто востребованных данных можно лишь потерять, т.к. запросы записи-чтения дороже, а первые 25 ГБ не бесплатны для нового тарифа
Standard-IA.DynamoDB Standard table class
▪️ First 25 GB stored per month is free using the DynamoDB Standard table class
▪️ $0.25 per GB-month thereafter
DynamoDB Standard-Infrequent Access (DynamoDB
Standard-IA) table class▪️ $0.10 per GB-month
#DynamoDB #cost_optimization
Amazon
New DynamoDB Table Class – Save Up To 60% in Your DynamoDB Costs | Amazon Web Services
Today we are announcing Amazon DynamoDB Standard-Infrequent Access (DynamoDB Standard-IA). A new table class for DynamoDB that reduces storage costs by 60 percent compared to existing DynamoDB Standard tables, and that delivers the same performance, durability…
Базы данных — ценовые войны продолжаются:
🔸 DynamoDB On-Demand теперь в2️⃣ раза дешевле!
🔸 DynamoDB Global tables — в3️⃣ раза дешевле!
🔹 Keyspaces (Cassandra) — в4️⃣ раза дешевле!
https://aws.amazon.com/blogs/database/new-amazon-dynamodb-lowers-pricing-for-on-demand-throughput-and-global-tables/
https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-keyspaces-apache-cassandra-reduces-prices-75-percent/
Помните про Valkey и уменьшение стоимости на треть по сравнению с Redis? Похоже, это был не отдельный манёвр, а новая стратегия. Очень интересно.
#DynamoDB #Keyspaces
🔸 DynamoDB On-Demand теперь в
🔸 DynamoDB Global tables — в
🔹 Keyspaces (Cassandra) — в
https://aws.amazon.com/blogs/database/new-amazon-dynamodb-lowers-pricing-for-on-demand-throughput-and-global-tables/
https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-keyspaces-apache-cassandra-reduces-prices-75-percent/
Помните про Valkey и уменьшение стоимости на треть по сравнению с Redis? Похоже, это был не отдельный манёвр, а новая стратегия. Очень интересно.
#DynamoDB #Keyspaces
Please open Telegram to view this post
VIEW IN TELEGRAM
Amazon
New – Amazon DynamoDB lowers pricing for on-demand throughput and global tables | Amazon Web Services
Our continued engineering investments on how efficiently we can operate DynamoDB allow us to identify and pass on cost savings to you. Effective November 1, 2024, DynamoDB has reduced prices for on-demand throughput by 50% and global tables by up to 67%,…
🔥24