DEV Community

Abhishek Gupta for AWS

Posted on • Originally published at community.aws

2 1

[20 Days of DynamoDB] Day 19 - PartiQL Batch Operations

Posted: 12/Feb/2024

You can use batched operations with PartiQL as well, thanks to BatchExecuteStatement. It allows you to batch reads as well as write requests.

Here is an example (note that you cannot mix both reads and writes in a single batch):

    //read statements
    client.BatchExecuteStatement(context.Background(), &dynamodb.BatchExecuteStatementInput{
        Statements: []types.BatchStatementRequest{
            {
                Statement: aws.String("SELECT * FROM url_metadata where shortcode=?"),
                Parameters: []types.AttributeValue{
                    &types.AttributeValueMemberS{Value: "abcd1234"},
                },
            },
            {
                Statement: aws.String("SELECT * FROM url_metadata where shortcode=?"),
                Parameters: []types.AttributeValue{
                    &types.AttributeValueMemberS{Value: "qwer4321"},
                },
            },
        },
    })

    //separate batch for write statements
    client.BatchExecuteStatement(context.Background(), &dynamodb.BatchExecuteStatementInput{
        Statements: []types.BatchStatementRequest{
            {
                Statement: aws.String("INSERT INTO url_metadata value {'longurl':?,'shortcode':?, 'active': true}"),
                Parameters: []types.AttributeValue{
                    &types.AttributeValueMemberS{Value: "https://github.com/abhirockzz"},
                    &types.AttributeValueMemberS{Value: uuid.New().String()[:8]},
                },
            },
            {
                Statement: aws.String("UPDATE url_metadata SET active=? where shortcode=?"),
                Parameters: []types.AttributeValue{
                    &types.AttributeValueMemberBOOL{Value: false},
                    &types.AttributeValueMemberS{Value: "abcd1234"},
                },
            },
            {
                Statement: aws.String("DELETE FROM url_metadata where shortcode=?"),
                Parameters: []types.AttributeValue{
                    &types.AttributeValueMemberS{Value: "qwer4321"},
                },
            },
        },
    })
Enter fullscreen mode Exit fullscreen mode

Just like BatchWriteItem, BatchExecuteStatement is limited to 25 statements (operations) per batch.

Recommended reading:

API Trace View

How I Cut 22.3 Seconds Off an API Call with Sentry

Struggling with slow API calls? Dan Mindru walks through how he used Sentry's new Trace View feature to shave off 22.3 seconds from an API call.

Get a practical walkthrough of how to identify bottlenecks, split tasks into multiple parallel tasks, identify slow AI model calls, and more.

Read more →

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.

Postgres on Neon - Get the Free Plan

No credit card required. The database you love, on a serverless platform designed to help you build faster.

Get Postgres on Neon

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay