Skip to content
This repository has been archived by the owner on Jul 22, 2018. It is now read-only.

Amazon DynamoDB

Benjamin Oakes edited this page Nov 13, 2013 · 6 revisions

From @benjaminoakes

  • NoSQL service
  • Built on SSDs
  • No storage limits
  • performance, durability, availability, scalability

DynamoDB

  • key value, no schema

  • key options: hash key lookups, or composite keys

  • Strong or eventual consistency -- you get to pick

  • Writes acknowledged nly when on disk in two AZs

  • Not worrying abiout memory, CPU, etc... you pick what your app needs in terms of latency, throughput, etc

  • You provision write and read capacity. You say what you want. No concern for storage.

  • Can change given your needs

  • Can match capacity to traffic; don't need to worry about forecasting as much as before

What does AWS do?

  • Scaling
  • Automatic sharding
  • Security, patches, upgrades
  • Automatic hardware failover
  • Multi-AZ replication
  • ...

Try: http://aws.amazon.com/dynamodb

Crittercism

  • User metadata DB for error reporting, etc

  • Started with MongoDB

  • Expensive to run the shards ($1.45/GB-mo -- the price floor, that's the least it would cost at 100% utilization)

  • Mongo's disk-based, but storage wasn't the problem...

  • Switched to Redis, designed their own sharding system (you guess it -- it was painful) "Redis ring"

  • DynamoDB... can only change up or down a few times today

  • $0.28/GB-mo

AdRoll

  • Ad serving
  • Have to respond quickly (40ms) about whether they will serve an ad

Takeaways

  • If you need the service, DynamoDB makes it cheaper to do instead of doing the infrastructure yourself
  • Lots of performance and redundancy problems are solved for you (built for high availability and ultra-fast responses)
  • Sounds like you can back up to S3? Maybe Glacier? Unsure

Things to think about for your app:

  • Storage
  • IOPS

Things not to think about for your app:

  • Sharding -- nice if it's taken care of for you

Not part of the talk:

  • Not much info about how DynamoDB actually works (developer centric)
  • It's a different implementation than Dynamo. Only proprietary implementations of the API.
  • To build against it, you'll have to use Amazon's implementation, but they offer a desktop version (Java)
  • Ruby SDK, not aware of a generic wrapper for KV stores that supports it
  • Migration strategy to/from DynamoDB is unclear to me
  • Related: SimpleDB (also Amazon proprietary), MongoDB, Couchbase, Cassandra, Riak

A crowd-sourced conference wiki!
Working together is better. :)




Clone this wiki locally