Basic information about Amazon DynamoDB Service:
AWS Free Tier availability:
- 100MB of Storage,
- 5 Units of Write Capacity,
- 10 Units of Read Capacity
- up to 40 million free operations each month with eventually consistent reads, or 25 million operations each month with strictly consistent reads
Developer Resources:
Features:
- Local secondary indexes
- SSD-storage
- automatic 3-way replication
- you pay a flat, hourly rate based on the capacity you reserve
- when creating or updating tables, you specify how much capacity you wish to reserve for reads and writes
Limits:
- Table name: allowed characters are a-z, A-Z, 0-9, ‘_’ (underscore), ‘-‘ (dash), and ‘.’ (dot). Names can be between 3 and 255 characters long.
- Local secondary index name: allowed characters are a-z, A-Z, 0-9, ‘_’ (underscore), ‘-‘ (dash), and ‘.’ (dot). Names can be between 3 and 255 characters long.
- Table size: No practical limit in number of bytes or items
- Tables per account: 256 per region (default). Increase can be requested.
- Hash or hash-and-range primary key: No practical limit.
- Number of hash key values: No practical limit.
- Hash-and-range primary key: No practical limit for non-indexed tables (otherwise total sizes of all table and index items cannot exceed 10 GB)
- Number of range keys per hash value: No practical limit for non-indexed tables (otherwise total sizes of all table and index items cannot exceed 10 GB)
- Provisioned throughput capacity unit sizes: One read capacity unit = one strongly consistent read per second, or two eventually consistent reads per second, for items up 4 KB in size. One write capacity unit = one write per second, for items up to 1 KB in size.
- Provisioned throughput minimum per table: 1 read capacity unit and 1 write capacity unit
- Provisioned throughput limits: can request an increase but default values are:
- US East (Northern Virginia) Region:
- Per table – 40,000 read capacity units or 40,000 write capacity units
- Per account – 80,000 read capacity units or 80,000 write capacity units
- All Other Regions:
- Per table – 10,000 read capacity units or 10,000 write capacity units
- Per account – 20,000 read capacity units or 20,000 write capacity units
- US East (Northern Virginia) Region:
- UpdateTable: Limits when increasing provisioned throughput: You can call UpdateTable as often as necessary to increase provisioned throughput. You can increase ReadCapacityUnits or WriteCapacityUnits for a table, subject to these conditions:
- You can call the UpdateTable API to increase ReadCapacityUnits or WriteCapacityUnits (or both), up to twice their current values.
- The new provisioned throughput settings do not take effect until the UpdateTable operation is complete.
- You can call UpdateTable multiple times, until you reach the desired throughput capacity for your table.
- UpdateTable: Limits when decreasing provisioned throughput: You can reduce the provisioned throughput on a table no more than four times in a single UTC calendar day. These reductions can be any of the following operations:
- Decrease ReadCapacityUnits.
- Decrease WriteCapacityUnits.
- Decrease both ReadCapacityUnits and WriteCapacityUnits in a single request. This counts as one of your allowed reductions for the day.
- Maximum concurrent Control Plane API requests (includes cumulative number of tables in the
CREATING
,UPDATING
orDELETING
state): In general, you can have up to 10 of these requests running concurrently. The only exception is when you areCREATING
a table and you have defined a local secondary index on that table. You can only have one such request running at a time. - Maximum number of local secondary indexes per table: You can define up to 5 local secondary indexes per table.
- Maximum number of projected attributes per table (local secondary indexes only): You can project a total of up to 20 attributes into all of a table’s local secondary indexes. This only applies to user-specified projected attributes.
In a
CreateTable
operation, if you specify aProjectionType
ofINCLUDE
, the total count of attributes specified inNonKeyAttributes
, summed across all of the local secondary indexes, must not exceed 20. If you project the same attribute name into two different indexes, this counts as two distinct attributes when determining the total.This limit does not apply for indexes with a
ProjectionType
ofKEYS_ONLY
orALL
. - Attribute name lengths: The following attribute names are length-restricted:
- Primary key attribute names.
- The names of any user-specified projected attributes (applicable only to local secondary indexes). In a
CreateTable
operation, if you specify aProjectionType
ofINCLUDE
, then the names of the attributes in theNonKeyAttributes
parameter are length-restricted. TheKEYS_ONLY
andALL
projection types are not affected. - For any of the attribute names listed above, the name must be between 1 and 255 characters long, inclusive. The name can be any UTF-8 encodable character, but the total size of the UTF-8 string after encoding cannot exceed 255 bytes.
- Item size: Cannot exceed 64 KB which includes both attribute name binary length (UTF-8 length) and attribute value lengths (again binary length). The attribute name counts towards the size limit. For example, consider an item with two attributes: one attribute named “shirt-color” with value “R” and another attribute named “shirt-size” with value “M”. The total size of that item is 23 bytes. These limits apply to items stored in tables, and also to items in local secondary indexes.
- Attribute values: cannot be null or empty
- Attribute name-value pairs per item: The cumulative size of attributes per item must be under 64 KB
- Hash primary key attribute value: 2048 bytes
- Range primary key attribute value: 1024 bytes
- String: All strings must conform to the UTF-8 encoding. Since UTF-8 is a variable width encoding, string sizes are determined using the UTF-8 bytes.
- Number: A number can have up to 38 digits precision and can be between 10^-128 to 10^+126.
- Maximum number of values in an attribute set: No practical limit on the quantity of values, as long as the item containing the values fits within the 64 KB item limit.
- BatchGetItem item maximum per operation: Up to 100 items retrieved, with the request size not exceeding 1 MB.
- BatchWriteItem item maximum per operation: Up to 25 items put or delete operations, with the request size not exceeding 1 MB.
- Query: Result set limited to 1 MB per API call. You can use the
LastEvaluatedKey
from the query response to retrieve more results. - Scan: Scanned data set size maximum is 1 MB per API call. You can use the
LastEvaluatedKey
from the scan response to retrieve more results
Resources:
- Pricing (http://aws.amazon.com/dynamodb/pricing/)
- Dynamo: Amazon’s Highly Available Key-value Store (http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf)
- Werner Vogels: Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications (http://www.allthingsdistributed.com/2012/01/amazon-dynamodb.html)
- How does Amazon DynamoDB differ from Amazon SimpleDB (http://aws.amazon.com/dynamodb/faqs/#How_does_Amazon_DynamoDB_differ_from_Amazon_SimpleDB_Which_should_I_use)
- DynamoDB Limits (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)
- Product page (http://aws.amazon.com/dynamodb/)
Tagged: Amazon AWS