ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Server
  • Cloud
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Download
ScyllaDB Docs Developers Switching from DynamoDB Practical Guides Migrating from DynamoDB

Migrating from DynamoDB¶

Assuming that all features required by the application are supported by ScyllaDB (irrespective of which API you choose), the level of effort should be minimal. The process typically involves lifting your existing DynamoDB tables’ data and then replaying changes from DynamoDB Streams to ScyllaDB. Once that is complete, you update your application to connect to ScyllaDB.

Migrating from DynamoDB to Alternator¶

As the migration target leverages the same API as the source, no transformation is required on the data. The overall steps are:

  1. Enable dual writes (or DynamoDB Streams)

  2. Migrate historical data

  3. If relying on DynamoDB Streams, replay streams after historical data migration is done

ScyllaDB’s Migrator is a very powerful tool to help users migrate from DynamoDB into ScyllaDB Alternator, as well as from Cassandra to ScyllaDB using CQL.

Check out ScyllaDB Migrator at the GitHub repo as well as the ScyllaDB University lesson

Step 1: Enable Dual Writes¶

  1. Use DynamoDB-compatible API libraries such as Boto3, Java AWS SDK, or Golang SDK. No driver changes are needed.

  2. Configure your application to write to both AWS DynamoDB and the Alternator cluster simultaneously.

  3. Ensure both databases receive all writes and implement retry mechanisms for consistency.

  4. Alternatively, use DynamoDB Streams to replicate live writes:
    1. Enable DynamoDB Streams to capture write events.

    2. Use AWS Lambda or an external function to replay these writes into the Alternator cluster.

Step 2: Migrate Historical Data (Lift and Shift)¶

  1. Use Spark or similar tools to scan the entire DynamoDB table.

  2. Alternatively, export data to Amazon S3 and then import the backup into Alternator.

Warning

Be mindful of Read Capacity Units (RCUs) to avoid throttling and high costs.

Note

Libraries that leverage the DynamoDB API also work with Alternator. That includes:

  • Python boto3, Java AWS SDK, golang AWS SDK

  • Kafka Streams Connector

  • NoSQL Workbench

  • Spark connectors

Step 3: (If using DynamoDB Streams) Replay Streams¶

  1. Use ScyllaDB Migrator to replay DynamoDB Streams

Step 4: Validation¶

  1. Dual-read from both sources, in parallel or in shadowed mode, to ensure consistency

  2. If inconsistencies are found, map and correct them

Step 5: Phase out the previous database¶

  1. As soon as you are confident with the migration, phase out the old database to avoid costs

Migrating from DynamoDB to CQL¶

When migrating from DynamoDB to CQL, table design must be adjusted to meet CQL’s schema and types.

As you plan the migration, map out all Item attributes in DynamoDB and their types in CQL.

Spark is a great way of performing the ETL necessary for the migration. You can leverage ScyllaDB’s Spark Connector, which relies on its exclusive shard-aware driver, to ensure maximum performance when communicating with ScyllaDB.

Step 1: Enable Dual Writes¶

  1. Keep using DynamoDB-compatible APIs for writing to DynamoDB.

  2. Use ScyllaDB CQL libraries for writing to ScyllaDB.

  3. Configure your application to write to both DynamoDB and Scylla CQL in parallel.

  4. Use ScyllaDB’s shard-aware drivers for optimal performance.

Step 2: Migrate Historical Data¶

  1. Read historical data directly from the DynamoDB table or use S3 exports.

  2. Convert DynamoDB’s schema-less data to Scylla’s schema-enforced format.

  3. Apply ETL transformations to align data types between DynamoDB and CQL.

To optimize CQL performance:

  1. Use ScyllaDB’s shard-aware drivers (enabled by default), which are available for C, Python, Go, Java, and other languages.

  2. Ensure rack-awareness to minimize cross-AZ traffic to reduce cost and optimize latency.

PREVIOUS
DAX Caching
NEXT
Avoiding Migration Pitfalls
Developers
  • Getting Started with ScyllaDB
    • What is ScyllaDB?
    • Technical Differentiators
  • Switching from DynamoDB
    • Hands on Labs
      • Simple Application
    • Practical Guides
      • Understanding Costs
        • Cost Calculator
        • Real World Scenarios
        • Pricing Models
        • Cost Units
        • Global Tables
        • DAX Caching
      • Migrating from DynamoDB
        • Avoiding Migration Pitfalls
    • User Stories
      • Yieldmo
      • Digital Turbine
      • iFood
      • GE Healthcare
Docs Tutorials University Contact Us About Us
© 2025, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 09 May 2025.
Powered by Sphinx 7.4.7 & ScyllaDB Theme 1.8.6