#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.