Amazon Web Services: DynamoDB 101 with ITOC Australia - What is DynamoDB
Scalable NoSQL with DynamoDB On AWS Cloudhttp://linkedin.com/in/davidnedved
What is DynamoDB?DynamoDB is a fully managed NoSQL database service that provides extremelyfast and predictable performance with seamless scalability
Many LanguagesUsing an API to access & control your cloud resources such as dynamo, ec2,elasticache, simpledb, etc KICKS ASS!
Highlights● Predictable Performance 6 Operations ○ Pay for performance - not what you use ○ Provisioned throughput (API or web-console) ● Put● Simple key value store (HashKey) ● Get ○ Tables, Items, Attributes ● Update● Sorted range key setup (RangeKey) ● Delete● Durable & Available ● Scan ○ Consistent, disk-only writes ● Query● Low Latency ○ SSD Based Storage ○ Single Digit (milliseconds)● Zero Administration● Massive & Seamless Scalability! ○ No table size/throughput limits ○ Live re-partitioning for changes to storage & throughput
Reducing Risk● Consistency ○ DynamoDB writes are not always consistent ○ Reads are consistent, or eventually consistent● Durability ○ All writes occur to disk, not memory ○ A write is only acknowledged (committed) once it exists in at least two AZs● Availability ○ Regional Service ○ Spans multiple AZs ○ All Data is continually replicated to multiple AZs
DynamoDB & EMR (Elastic MapReduce)Seamless Integration● Archive ○ Effective export of dynamo tables to S3 (as CSV files)● Data Load ○ Efficient import of exported tables from S3 backend into DynamoDB● Complex Queries ○ Sophisticated, SQL-based querying of DynamoDB table GROUP BY, JOIN, HAVING, etc...● Complex Joins ○ Ability to Join live tables in DynamoDB with Archived Tables in S3
What to watch out for● 64kb item limit. ○ Use it as a lookup to S3● No Auto Increase Throughput Option ○ Cloudwatch alarm -> SNS Alert -> HTTP endpoint -> API increase throughput ○ Write to an SQS queue. Control the input speed.● 50 Item limit on scans. ○ Paging.● Don’t assume sorting. ○ Use range key for sorting.● Where clauses on the scans will run over the entire table. ○ Use Elastic MapReduce