Analytics

Export DynamoDB data to S3 and use purpose-built analytics tools instead of running expensive scans and queries directly on tables.

Why DynamoDB isn’t built for analytics

DynamoDB is a transactional database optimized for high-speed, low-latency reads and writes of individual items or small result sets. It excels at operational workloads like user lookups, session management, and real-time data access. However, DynamoDB is fundamentally not designed for analytical workloads.1

Why analytics on DynamoDB is expensive:

  • Scan operations consume massive RCUs - Analytical queries often need to examine entire datasets, requiring expensive table scans
  • Limited aggregation capabilities - DynamoDB doesn’t have native support for complex aggregations, joins, or analytical functions
  • High cost per query - Reading millions of items for analysis can cost hundreds or thousands of dollars monthly
  • Performance impact - Heavy analytical scans can throttle your production application traffic
  • Not designed for this use case - You’re paying for operational database performance when you need analytical processing

The S3 export approach

Instead of running expensive scans on DynamoDB, export your data to S3 and use purpose-built analytics tools. This approach changes the economics entirely.

Pricing structure:

  • DynamoDB export to S3: $0.10 per GB exported2
  • S3 storage: $0.023 per GB-month (Standard tier)
  • Athena queries: $5 per TB of data scanned
  • Alternative tools: Glue, EMR, Redshift Spectrum have their own pricing models

The key advantage: once data is in S3, you can run unlimited analytical queries using SQL, join with other datasets, and leverage purpose-built analytics engines—all without consuming DynamoDB capacity or throttling your production workloads.

Incremental exports

For scenarios where you need more frequent analytical refreshes, DynamoDB supports incremental exports.2

How it works:

  • Requires Point-in-Time Recovery (PITR) enabled on your table
  • Exports only changes (inserts, updates, deletes) since the last export
  • Significantly reduces export costs and time

Important considerations

Data freshness:

  • Exports represent snapshots, not real-time data
  • For real-time analytics, consider DynamoDB Streams → Kinesis → analytics pipeline (more complex and expensive)

Resources

Footnotes

  1. DynamoDB Best Practices

  2. Exporting DynamoDB data to S3 2