Dive Deep into Amazon Dynamodb Dat330

Title

AWS re:Invent 2023 - Dive deep into Amazon DynamoDB (DAT330)

Summary

  • DynamoDB Capacity Modes: Discussed DynamoDB's on-demand and provisioned capacity modes, including how DynamoDB scales, rate limiting, and global admission control (GAC).
  • Transactions: Covered DynamoDB's support for ACID transactions, serializable isolation, and the benefits of single-request transactions over multi-request transactions for predictable performance.
  • Streams: Explained DynamoDB Streams, including guarantees provided, shard rotation, and splitting for scalability and load balancing.
  • Global Tables: Described how global tables work, their consistency and ordering guarantees, and the behavior of streams in a global table setup.
  • Best Practices: Recommended starting with on-demand mode to understand application patterns before deciding on provisioned mode, and provided insights into building applications with DynamoDB transactions and streams.
  • Additional Resources: Shared links to previous re:Invent talks and USENIX papers for further reading on DynamoDB's architecture and transactions.

Insights

  • DynamoDB's Scale: DynamoDB can handle high traffic loads, scaling horizontally by partitioning data and maintaining predictable response times.
  • On-Demand vs. Provisioned: On-demand mode is suitable for unpredictable workloads and scales to zero, while provisioned mode is better for predictable workloads and can be auto-scaled.
  • Transactions: DynamoDB transactions are designed for high performance and predictability, avoiding distributed lock managers and providing idempotent operations with client request tokens.
  • Streams: DynamoDB Streams offer strict ordering and exactly-once delivery, with sharding to handle high throughput and shard rotation for internal load balancing.
  • Global Tables: Global tables provide a fully managed solution for globally distributed applications, handling replication and conflict resolution with eventual consistency and last-writer-wins conflict resolution.
  • Application Design: When using DynamoDB, it's important to design applications to handle the nuances of transactions, streams, and global tables, such as crash recovery and stream event processing in multiple regions.