#DynamoDB #docker образ для локального #development - https://hub.docker.com/r/amazon/dynamodb-local/.
Работа с 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…