DynamoDB differs from other Amazon services by allowing developers to purchase a service
based on throughput, rather than storage. Although the database does not automatically scale,
administrators can request more throughput and DynamoDB will spread the data and traffic over a
number of servers using solid-state drives, allowing predictable performance. It offers integration
with Hadoop via Elastic MapReduce.
Scalable- There is no limit to the amount of data you can store in an Amazon DynamoDB
table, and the service automatically allocates more storage, as you store more data using the
Amazon DynamoDB write APIs.
Distributed- Amazon DynamoDB scales horizontally and seamlessly scales a single table
over hundreds of servers.
Flexible - Amazon DynamoDB does not have a fixed schema. Instead, each data item may
have a different number of attributes. Multiple data types (strings, numbers, binary, and sets)
add richness to the data model.
Easy Administration— Hosted by Amazon and receives Fully Managed Service from
Cost Effective— a free tier allows more than 40 million database operations/month and
pricing is based on throughput.
Built-in Fault Tolerance— Amazon DynamoDB has built-in fault tolerance, automatically
and synchronously replicating your data across multiple Availability Zones in a Region for
high availability and to help protect your data against individual machine, or even facility
Automatic data replication - All data items are stored on Solid State Disks (SSDs) and are
automatically replicated across multiple Availability Zones in a Region to provide built-in high
availability ,data durability
Amazon Redshift Integration-You can load data from Amazon DynamoDB tables into
Amazon Redshift, a fully managed data warehouse service. You can connect to Amazon
Redshift with a SQL client or business intelligence tool using standard PostgreSQL JDBC or
ODBC drivers, and perform complex SQL queries and business intelligence tasks on your
Integrated Monitoring-Amazon DynamoDB displays key operational metrics for your table
in the AWS Management Console. The service also integrates with CloudWatch so you can
see your request throughput and latency for each Amazon DynamoDB table, and easily track
your resource consumption.
Fast, Predictable Performance- Average service-side latencies in single-digit milliseconds
Secure- Amazon DynamoDB is secure and uses proven cryptographic methods to
authenticate users and prevent unauthorized data access. It also integrates with AWS
Identity and Access Management for fine-grained access control for users within your
organization. Uses secure algorithms to keep your data safe
Amazon Elastic MapReduce Integration- Tightly integrated with Amazon Elastic Map
Reduce (Amazon EMR) that allows businesses to perform complex analytics of their large
datasets using a hosted pay-as-you-go Hadoop framework on AWS.
Strong Consistency, Atomic Counters- Single API call allows you to atomically increment
or decrement numerical attributes
Provisioned Throughput — when creating a table, simply specify how much throughput
capacity you require. Amazon DynamoDB allocates dedicated resources to your table to
meet your performance requirements, and automatically partitions data over a sufficient
number of servers to meet your request capacity.
Supports Compression-Data can be compressed and stored in binary form using
Compression algorithms, such as GZIP or LZO
Low learning curve
Composite key support
Offers Conditional updates
Supports Hadoop integration Map Reduce, Hive
64KB limit on row size
1MB limit on querying
Deployable Only on AWS
Dynamo is an expensive and extremely low latency solution, If you are trying to store more
than 64KB per item
Consistency comes with cost– Read capacity units are based on strongly consistent read
operations, which require more effort and consume twice as many database resources as
eventually consistent reads.
Size is multiple of 4KB for Read operations: If you get an item of 3.5 KB, Amazon
DynamoDB rounds the items size to 4 KB. If you get an item of 10 KB, Amazon DynamoDB
rounds the item size to 12 KB. If Batch reads a 1.5 KB item and a 6.5 KB item, Amazon
DynamoDB will calculate the size as 12 KB (4 KB + 8 KB), not 8 KB (1.5 KB + 6.5 KB).
Queries - Querying data is extremely limited. Especially if you want to query non-indexed
Unable to do complex queries. DynamoDB is great for lookups by key, not so good for
queries, and abysmal for queries with multiple predicates. (Esp. for Eventlog tables)
Secondary indexes are not supported.
Indexing - Changing or adding keys on-the-fly is impossible without creating a new table.
Indexes on column values are not supported.
Joins are impossible -you have to manage complex data relations on your code/cache
Backup - tedious backup procedure as compared to the slick backup of RDS
Latency in availability- When you create a table programatically (or even using AWS
Console), the table doesn’t become available instantly
NO ACID-In RDBMS we get ACID guarantee, but in Dynamo-db there is no such guarantee.
Speed - Response time is problematic compared to RDS. You find yourself building
elaborate caching mechanism to compensate for it in places you would have settled for
RDS's internal caching.
No support for atomic transactions- Each write operation is atomic to an item. A write
operation either successfully updates all of the item's attributes or none of its attributes.
Additional storage cost for each item- In computing the storage used by the table,
Amazon DynamoDB adds 100 bytes of overhead to each item for indexing purposes, this
extra 100 bytes is not used in computing the capacity unit calculation.
Latency in read/write- Once you hit the read or write limit, your requests are denied until
enough time has elapsed.
Poor query comparison operators
No Foreign Keys
No Server-side scripts
Workarounds to improve performance
Table Best Practices- Amazon DynamoDB tables are distributed across multiple partitions. For
best results, design your tables and applications so that read and write activity is spread evenly
across all of the items in your tables, and avoid I/O "hot spots" that can degrade performance.
Design For Uniform Data Access Across Items In Your Tables
Distribute Write Activity During Data Upload
Understand Access Patterns for Time Series Data
Item Best Practices-Amazon DynamoDB items are limited in size. However, there is no limit on
the number of items in a table. Rather than storing large data attribute values in an item, consider
one or more of these application design alternatives.
Use One-to-Many Tables Instead Of Large Set Attributes
Use Multiple Tables to Support Varied Access Patterns
Compress Large Attribute Values
Store Large Attribute Values in Amazon S3
Break Up Large Attributes Across Multiple Items
Query and Scan Best Practices-Sudden, unexpected read activity can quickly consume the
provisioned read capacity for a table. In addition, such activity can be inefficient if it is not evenly
spread across table partitions.
Avoid Sudden Bursts of Read Activity
Take Advantage of Parallel Scans
Local Secondary Index Best Practices-Local secondary indexes let you define alternate range
keys on a table. You can then issue Query requests against those range keys, in addition to the
table's hash key. Before using local secondary indexes, you should be aware of the inherent
tradeoffs in terms of provisioned throughput costs, storage costs, and query efficiency.
Use Indexes Sparingly
Choose Projections Carefully
Optimize Frequent Queries To Avoid Fetches
Take Advantage of Sparse Indexes
Watch For Expanding Item Collections
Comparison of SQL Server and Dynamo DB
Name DynamoDB Microsoft SQL Server
Hosted, scalable database service by
Microsoft’s relational DBMS
Developer Amazon Microsoft
Initial release 2012 1989
License n.a. commercial
Database model Key-value store Relational DBMS
Data scheme schema-free yes
Typing yes yes
Secondary indexes no yes
SQL no yes
APIs and other
RESTful HTTP API
Tabular Data Stream (TDS)
Server-side scripts no
Transact-SQL and .NET
Triggers no yes
Partitioning methods Sharding
Tables can be distributed across
several files (horizontal
partitioning), but no sharding
Replication methods yes
yes, (depends on the SQL-Server
MapReduce no no
Foreign keys no yes
Concurrency yes yes
Durability yes yes
Access rights for users and roles can be
defined via the AWS Identity and Access
Users with fine-grained
Data stored in Amazon cloud
Is one of the "Big 3" commercial
database management systems
besides Oracle and DB2