AWS Database Blog Note

AWS Database Blog

The website provides an Amazon Web Services (AWS) blog for databases, which works to assist users in efficiently using AWS database services by providing resourceful tutorials, advice, and answers to frequently asked questions.

Thread Of Notes

PostgreSQL 18 on Amazon Aurora and Amazon RDS: Performance enhancements

This is Part 1 of a two-part series covering the key features in PostgreSQL 18. In this post, we focus on performance enhancements: skip scan optimization for multicolumn indexes, enhanced EXPLAIN output, automatic removal of unnecessary self-joins, and several vacuum and autovacuum improvements that help keep your database running efficiently.

PostgreSQL 18 on Amazon Aurora and Amazon RDS: Security, monitoring, and developer enhancements

In Part 1 of this series, we explored the performance enhancements in PostgreSQL 18, including skip scan optimization, enhanced EXPLAIN output, automatic self-join removal, and vacuum/autovacuum improvements. In this second part, we focus on security, monitoring, developer productivity, and logical replication enhancements that improve operational efficiency and the overall developer experience.

Deep dive into Amazon Aurora PostgreSQL lock analysis with CloudWatch Database Insights

In this post, we show you how to use Amazon CloudWatch Database Insights for lock analysis in Amazon Aurora PostgreSQL. You learn how to enable the feature, interpret lock tree visualizations, resolve common lock-related issues, and maintain optimal database performance. This lock tree analysis feature also applies to Amazon RDS for PostgreSQL.
CdXz5zHNQW_Zc0gNntqmH.png

Converting an RDS for SQL Server instance from license included to Bring Your Own Media (BYOM)

Amazon RDS for SQL Server recently launched Bring Your Own Media (BYOM), so you can use your existing SQL Server licenses with fully managed RDS instances. This is particularly valuable if you have existing Microsoft licensing agreements and want to optimize your cloud spending by using those investments on AWS. If you’re already running RDS for SQL Server with the license-included (LI) model, you can now convert those instances to BYOM in place, no database migration required. In this post, we walk you through the end-to-end conversion process: preparing your installation media, creating a BYOM engine version, and performing the in-place license model change.

Similarweb’s migration from HBase to Amazon DynamoDB

Managing massive data volumes at scale presents significant operational challenges. At Similarweb we faced these challenges with Apache HBase and found a solution in Amazon DynamoDB. Similarweb is a digital intelligence platform that provides AI-powered insights into website traffic, app usage, and market trends to help businesses benchmark competitors and optimize growth strategies. We faced growing scalability and operational complexity issues with our existing Apache HBase infrastructure, which prompted us to explore more flexible and efficient alternatives. This post walks you through our journey migrating our data storage from Apache HBase to DynamoDB. We discuss the technical challenges, migration approach, data modeling strategies, cost optimization techniques, and key benefits achieved along the way.
CdXz5zHNQW_1GDAUsG6KF.png

Improve query performance with EXPLAIN plans in Amazon Aurora DSQL

In this post, we show you how to use EXPLAIN plans to diagnose and improve query performance in Amazon Aurora DSQL. We introduce a three-layer filter model as a practical framework for understanding where your predicates are evaluated, and walk through the architecture differences that make Aurora DSQL plans unique, the anatomy of an EXPLAIN output, access method selection, and a step-by-step query improvement workflow.
CdXz5zHNQW_xElZnc434g.png

Automate Amazon Aurora PostgreSQL major or minor version upgrade using AWS Systems Manager and Amazon EC2

Managing Aurora PostgreSQL-Compatible Edition upgrades across multiple database clusters can be time-consuming and error-prone when done manually. In this post, we show you how to automate Amazon Aurora PostgreSQL upgrades across your entire database fleet through consistent, repeatable procedures.
CdXz5zHNQW_tuqt7nFQno.png

How to migrate from Oracle to Amazon Aurora PostgreSQL using AWS CloudFormation (Part 1)

In this post, you learn how to use AWS DMS Schema Conversion to migrate Oracle schemas to PostgreSQL. AWS DMS Schema Conversion converts database schemas and code objects to formats compatible with your target database. You also learn how to use AWS DMS to migrate data to Amazon Aurora PostgreSQL-Compatible Edition.
CdXz5zHNQW_DRwsovYi0w.jpeg

Avoid shared database accounts with federated IAM authentication

In this post, you will learn how to integrate Okta with AWS IAM Identity Center and implement Amazon Relational Database Service (Amazon RDS) AWS Identity and Access Management (AWS IAM) authentication to create a unified authentication flow. You configure attribute-based access control (ABAC) that automatically maps user identities from your IdP to database permissions, supporting interactive user sessions and helping you avoid shared accounts. By the end, you have a working system where database authentication works exactly like your application authentication.
CdXz5zHNQW_cNjCdprbbX.png

Building type-safe applications with Drizzle ORM in Aurora DSQL

In this post, you’ll build a working veterinary clinic CLI application that demonstrates production-ready patterns for connecting Drizzle ORM to Aurora DSQL. By the end, you’ll have a running app with one-to-many and many-to-many relationships, and the patterns you learn (UUID primary keys, application-level relationships, and a custom migration runner) work with other TypeScript ORMs on Aurora DSQL too.
CdXz5zHNQW_wxqDoNeR7w.png

Pagination patterns in Amazon Aurora DSQL

In this post, you learn three pagination techniques for Aurora DSQL: OFFSET/LIMIT, cursor-based (keyset), and temporal. You implement keyset pagination in SQL and Python, build it into an API layer, optimize with composite indexes, handle batch processing within the 3,000-row transaction limit, and avoid five common anti-patterns. By the end, you can choose the right pagination method for your workload and implement it with confidence.
CdXz5zHNQW_LeUtR56aRL.png

Announcing Amazon RDS for Db2 12.1 with additional community edition

Amazon RDS for Db2 now supports IBM Db2 12.1, the latest generation of the Db2 database engine. Alongside this upgrade, we’re introducing a new edition: Community Edition (db2-ce). You now have three edition choices when you provision an Amazon RDS for Db2 instance. In this post, we walk through what’s new in Db2 12.1, introduce the Community Edition and when to use it, show you how to get started using the AWS Management Console, AWS Command Line Interface (AWS CLI), and Terraform, and cover the upgrade path from Db2 11.5.

Automate Oracle PL/SQL to PostgreSQL migration with Amazon Bedrock and Strands Agents

In this post, you learn how to build a generative AI–powered migration assistant that helps automate portions of the last mile of code conversion. Using Anthropic’s Claude Sonnet 4.6 on Amazon Bedrock, the Strands Agents framework, and the AWS Knowledge MCP Server, you can automate the conversion and validation of PL/SQL objects against Amazon Aurora PostgreSQL-Compatible Edition. The assistant reads the AWS DMS SC assessment CSV, fetches live PL/SQL source from Oracle, converts each object, deploys the result to Aurora PostgreSQL through AWS Lambda, and runs automated tests, in a single pipeline.
CdXz5zHNQW_qQMBulHWJf.png

Building Python applications with SQLAlchemy and Aurora DSQL

In this post, you’ll build a working veterinary clinic command line interface (CLI) application that demonstrates production-ready patterns for connecting SQLAlchemy to Aurora DSQL. The patterns you implement (UUID primary keys, application-level relationships, and AUTOCOMMIT engine configuration) apply to other Python ORMs on Aurora DSQL.
CdXz5zHNQW_ApKb6LZbIT.png

Oracle Database@AWS decoded: Determining the right fit for your Oracle workloads

In this post, we explore the key reasons why Oracle Database@AWS is a strong fit for organizations running Oracle workloads on AWS. We cover the business, technical, and licensing advantages it brings, and how it complements the existing AWS options you already know, such as Amazon RDS for Oracle and Amazon EC2.
CdXz5zHNQW_cMAo7gl6Hz.png

Understanding how backups work in Amazon Aurora

In this post, we dive deep into the Aurora backup architecture, how it differs from Amazon RDS backups, and the Amazon CloudWatch metrics available to monitor your backup storage usage. Through detailed scenarios and visualizations, we demonstrate how workload patterns and retention periods impact backup costs. We also explore cross-Region backup options and share recommended practices to optimize your backup storage consumption.
CdXz5zHNQW_EDHogsZ1tb.png

Index types supported in Amazon Aurora PostgreSQL and Amazon RDS for PostgreSQL using extensions (Bloom, pg_trgm, and pg_bigm)

In Part 1, Part 2, and Part 3 of this series, we explored PostgreSQL’s native indexes (B-tree, GIN, GiST, HASH, BRIN) and specialized extension-based index types (SP-GiST, btree_gin, btree_gist). In this post, we dive into three additional extensions: Bloom (for space-efficient multi-column equality filtering), pg_trgm (for fuzzy text matching and similarity searches), and pg_bigm (for full-text search optimized for Asian languages)
CdXz5zHNQW_wr7k3fM6xm.png

Index types supported in Amazon Aurora PostgreSQL and Amazon RDS for PostgreSQL using extensions (SP-GiST, Btree_Gin and Btree_Gist)

In this post, the third in the series, we dive into three extension-based index types: SP-GiST, btree_gin, and btree_gist. These are available in Amazon Aurora PostgreSQL-Compatible Edition and Amazon Relational Database Service (Amazon RDS) for PostgreSQL. PostgreSQL’s index infrastructure is extensible. Operator classes define how indexes behave for specific data types and operations. The SP-GiST, btree_gin, and btree_gist extensions take advantage of this extensibility to give you additional indexing strategies beyond the native options. We walk through when to use each extension, the data types they support, and practical examples that demonstrate their performance benefits.

Implementing real-time change data capture with Debezium for Amazon Aurora PostgreSQL and Amazon RDS for PostgreSQL

In this post, we demonstrate how to implement a production-ready CDC solution by using Amazon Aurora for PostgreSQL, Debezium connectors, and Amazon Managed Streaming for Apache Kafka (Amazon MSK). This solution captures database changes in real time and streams them to Kafka topics so that downstream consumers can process the same data for different business purposes.
CdXz5zHNQW_GVRzv4pFMP.png

Accelerating developer productivity in the agentic AI era with Amazon Aurora PostgreSQL

In this post, you learn how Amazon Aurora PostgreSQL-Compatible Edition accelerates developer productivity in the agentic AI era. We explore three core design convictions: meet developers where they work, absorb workload variability, and grow with the application from prototype to global scale.
CdXz5zHNQW_k1gen6Snbm.png

Guide your Amazon Aurora MySQL migration with Kiro powers

Today, we announce the Amazon Aurora MySQL power for Kiro. The power connects Kiro’s AI agent to Aurora MySQL and pairs live database access with curated best-practice guidance. You describe what you need in natural language. The agent generates the API calls, SQL, and configuration for you to review and run. In this post, we walk through how the power guides a production migration from Amazon Relational Database Service (Amazon RDS) for MySQL 8.0 to Aurora MySQL through four phases: assessment, replica creation, promotion, and post-cutover validation.
CdXz5zHNQW_A5kQJPAOVK.png

Real-time personalized recommendations with Amazon SageMaker and Amazon-managed Valkey

Amazon receives millions of visits every day, and earning each customer’s trust visit after visit is the foundation that the store is built on. A meaningful part of that trust comes down to whether the recommendations we surface feel relevant and whether they reflect what the customer actually cares about in the moment. In this post, we describe an architecture that makes it achievable. Amazon SageMaker hosts a sentence transformer model on a managed endpoint and turns customer query text into dense semantic vectors. Valkey is an open source, in-memory data store with built-in vector search. It’s available on AWS through Amazon ElastiCache and Amazon MemoryDB. In our architecture, we use Amazon-managed Valkey to store the product catalog as a vector index.
CdXz5zHNQW_yJyzobf60t.png

Optimize costs in Amazon Aurora

By implementing modern optimization techniques for Aurora, you can achieve additional cost reduction beyond traditional methods alone. This isn’t only about spending less—it’s about building a more efficient, scalable, and resilient database environment. In this post, we show you a structured approach to optimizing Amazon Aurora database costs. It outlines specific strategies, implementation steps, and best practices across different optimization areas.
CdXz5zHNQW_R6r8FGtQhm.png

Preserving custom domain names for Amazon RDS for Db2

In this post, we introduce a modular Terraform template, published in the aws-samples/sample-rds-db2-tools repository, that lets your applications keep their existing custom domain names and ports while preserving end-to-end TLS encryption to Amazon RDS for Db2. The template deploys a Server Name Indication (SNI) based TLS proxy that forwards encrypted traffic without ever decrypting it.
CdXz5zHNQW_XxwDbatMFr.png

Amazon Aurora MySQL 8.4 is now generally available

Today, we are excited to announce the general availability of Amazon Aurora MySQL 8.4, our latest major version, compatible with community MySQL 8.4.7. This release marks an important milestone for Aurora MySQL customers, introducing a simplified versioning model aligned directly with community MySQL, along with a streamlined patch version experience, and the full set of community MySQL 8.4 enhancements. In this post, we discuss the customer challenges that this release addresses, introduce Aurora MySQL 8.4, walk through the new versioning approach and its benefits for customers, cover the key capabilities delivered in Aurora MySQL 8.4, and show you how to get started.
CdXz5zHNQW_FR1XrAGSlk.jpeg

Best practices for Amazon DynamoDB Global Tables – Part 3: Validating regional resilience with AWS Fault Injection Service

In this post, we show you how to use AWS Fault Injection Service (AWS FIS) to validate that your application handles regional disruptions the way you expect, by running controlled experiments against your DynamoDB global tables. We cover both multi-Region strong consistency (MRSC) and multi-Region eventually consistent (MREC) global tables, because AWS FIS works differently with each.

Best practices for Amazon DynamoDB Global Tables – Part 1: Operational readiness

This is Part 1 of a series on best practices for DynamoDB global tables. In this post, we focus on preparation: understanding how replication works, what your resilience posture looks like, and the operational groundwork that separates a controlled failover from a scramble.

Introducing ExtendDB: An open source DynamoDB-compatible adapter with pluggable storage backends

Today, we are announcing ExtendDB, an open source Amazon DynamoDB-compatible adapter with pluggable storage backends, released under the Apache 2.0 License. ExtendDB implements the DynamoDB wire protocol and ships with PostgreSQL as its first backend, so any AWS SDK, CLI, or tool that works with DynamoDB works with ExtendDB unchanged. In this post, we introduce ExtendDB, walk through getting started, and explain the architecture. This is a v0.1 release for development, testing, and experimentation.
CdXz5zHNQW_4k4MS4MKMJ.png

Deploying Amazon RDS for Db2 using Terraform

Customers running IBM Db2 workloads often ask for a repeatable, auditable way to provision Amazon RDS for Db2 that fits their existing infrastructure-as-code practice. In this post, we introduce a modular Terraform template, published in the aws-samples/sample-rds-db2-tools repository. The template takes you from an empty AWS account to a running RDS for Db2 instance tracked in AWS License Manager in under an hour.
CdXz5zHNQW_W7fFINUCil.png

Nine Entertainment’s journey: Achieving 98% cost savings with Amazon ElastiCache Serverless for Valkey

In this post we demonstrate how Nine Entertainment achieved a 98% cost reduction by migrating to Amazon ElastiCache Serverless for Valkey while improving scalability and eliminating manual intervention during peak events.
CdXz5zHNQW_wCmRGzJKtB.jpeg

Automated JDBC query caching with the AWS Advanced JDBC Wrapper

Today, we’re announcing the Remote Query Cache Plugin for the AWS Advanced JDBC Wrapper. The plugin handles query caching automatically. It intercepts JDBC queries, caches results in Amazon ElastiCache for Valkey, and serves subsequent identical queries from cache. Your only application change is prefixing queries with SQL hints. In this post, we show you how to use Amazon CloudWatch Database Insights to identify queries to cache, configure the Remote Query Cache Plugin in your Java applications, and monitor cache effectiveness using Amazon CloudWatch.
CdXz5zHNQW_UmsbBcwQpm.png

Building an AI-powered grid investigation agent with Aurora DSQL and Amazon Bedrock AgentCore

In this post, we show how to build an Amazon Aurora DSQL database agent that other AI agents can discover and query through natural language using the A2A protocol. You’ll walk through how to build and deploy this using Amazon Bedrock AgentCore capabilities, including AgentCore Runtime for hosting, AgentCore Gateway for tool access via MCP, and the Strands Agents SDK for agent logic.
CdXz5zHNQW_bCrjNd7ieO.png

Getting started with Change Data Capture in Amazon Aurora DSQL

In this post, we demonstrate how to configure Aurora DSQL Change Data Capture and stream database changes into Kinesis Data Streams. You will learn how CDC works, how to configure a streaming pipeline, and how to consume change events. By the end of this post, you will have a working CDC pipeline that streams database changes into a durable event stream that downstream applications can process.
CdXz5zHNQW_wfaZzR8Wfo.png

Upgrade strategies for Amazon RDS for MySQL 8.0 to 8.4

This post is part of a two-part series on upgrading RDS for MySQL 8.0 to 8.4. Here, we cover the end of standard support timeline, extended support costs, upgrade methods, and key best practices. For a step-by-step implementation guide, see Best practices for upgrading RDS for MySQL 8.0 to 8.4 with prechecks, Blue/Green, and rollback.
CdXz5zHNQW_WpSz6Scc3B.jpeg

Best practices for upgrading Amazon RDS for MySQL 8.0 to 8.4 with prechecks, Blue/Green, and rollback

In this post, you learn how to build a complete upgrade workflow for RDS for MySQL 8.0 to 8.4, covering pre-upgrade compatibility checks, Amazon RDS Blue/Green Deployments for minimal downtime, and a rollback strategy for added protection.
CdXz5zHNQW_kbtCA4ekHr.png

How HotelTrader cut inter-AZ cost 95% and latency by 49% with Valkey GLIDE on Amazon ElastiCache

In this post, you learn how HotelTrader reduced inter-availability zone data transfer costs by 95% and improved average latency by 49% by migrating from the Redis Lettuce client to Valkey GLIDE on Amazon ElastiCache. The post walks through how HotelTrader identified hidden cross-AZ data transfer costs in their multi-AZ ElastiCache cluster, implemented Valkey GLIDE's AZ-affinity read strategy to route requests to local replicas, optimized throughput with request batching, and executed a zero-downtime migration using A/B testing over 15 days.
CdXz5zHNQW_TMfSpZOfWD.png

Zero-downtime DynamoDB construct migration: from Table to TableV2 with cdk orphan

In this post, we show you how to use the new cdk orphan command to safely migrate a DynamoDB table from the Table construct to TableV2 with zero downtime. Your data stays intact, streams keep flowing, and your application remains available throughout the process.
CdXz5zHNQW_Zs9RMAXajo.png

Filter, transform, and load your DynamoDB table exports using AWS Glue

In this post, we show how you can load (import) an Amazon DynamoDB full or incremental table export into a second DynamoDB table with precise control over what gets loaded, at what write rate, and with the ability to observe the progress. This technique helps drive large-scale data migrations and synchronizations where you want maximum control.

Migrating Amazon RDS for PostgreSQL to Amazon Aurora using seeded logical replication

In this post, we show you how to migrate from an Amazon RDS for PostgreSQL to Amazon Aurora PostgreSQL-Compatible Edition using seeded logical replication. For live migrations with minimal downtime, AWS provides several approaches, including Aurora read replicas, the snapshot/restore method combined with ongoing replication, and AWS DMS.
CdXz5zHNQW_Vk9Gact5Uh.png

Amazon Aurora DSQL connections: Drivers, strings, and best practices

Connecting to Amazon Aurora DSQL requires a different approach than traditional PostgreSQL databases. Instead of long-lived passwords, you use short-lived IAM authentication tokens. Instead of static endpoints, you work with distributed cluster endpoints that route connections across Availability Zones. In this post, you learn how to configure connection strings, set up drivers in Python, Java, and Node.js, and implement best practices for authentication, connection pooling, and lifecycle management with Amazon Aurora DSQL.
CdXz5zHNQW_kJGIt9kDr3.png

Query billion-scale vectors with SQL: Integrating Amazon S3 Vectors and Aurora PostgreSQL

In this post, you’ll learn how to query Amazon S3 Vectors from Amazon Aurora PostgreSQL-Compatible Edition using standard SQL, and how to combine vector similarity results with relational filters in a single query, for example, finding the most semantically similar products and then filtering by price, stock status, or tenant in one SQL statement.
CdXz5zHNQW_tMSoOVBUZ7.png