AWS re:Invent 2018: Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321)
Amazon Web Services2 HN recommenders · 2018–2022
112K views · talk · dated · Uploaded 2018-11-27
An AWS re:Invent 2018 session on how DynamoDB was built as a hyper-scale NoSQL database. It discloses underpinnings of the service and how it is run for over 100,000 customers.
HN points to it as an authoritative look at DynamoDB internals and as evidence it is a complex distributed system.
42:03The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
31:44The Value of Values with Rich Hickey
InfoQ
19:10Velocity NY 2013: Richard Cook, "Resilience In Complex Adaptive Systems"
O'Reilly
52:35Debugging Under Fire: Keep your Head when Systems have Lost their Mind • Bryan Cantrill • GOTO 2017
GOTO Conferences
59:56AWS re:Invent 2018: Amazon DynamoDB Deep Dive: Advanced Design Patterns for DynamoDB (DAT401)
Amazon Web Services
49:15Erlang Factory 2014 - That's 'Billion' with a 'B': Scaling to the Next Level at WhatsApp
Erlang Solutions
47:43"Turning the database inside out with Apache Samza" by Martin Kleppmann
Strange Loop Conference
4 comments from Hacker News
DynamoDB is different from their published paper, which is mostly about designing a highly available key/value system that can be run on top of any other datastore. The paper does mention MySQL as a storage option. The recent MySQL info comes from this 2016 thread on DynamoDB storing empty strings: [LINK] Confirmed by this comment specifically: [LINK] The latest 2018 ReInvent deep dive on DynamoDB doesn't reveal anything but still fits if mysql is powering the storage nodes: [VIDEO]
Saying DynamoDB is built on top of InnoDB is a pretty big oversimplification of a much more complex distributed system[1] and for all we know they could have switched out the low level the storage engine on the backend to something like RocksDB or WiredTiger. The Aurora storage subsystem is much more limited in terms of horizontal scalability and performance, they probably chose it because it was a better/quicker fit. 1. [VIDEO]
Here are a couple videos from reInvent 2018: Jaso talking about DynamoDB internals [VIDEO] Marc talking about Lambda internals [LINK]
We don't have a paper on DynamoDB's internals (yet?), but here's a talk you might find interesting from one of the folks who built and ran DDB for a long time: [VIDEO] And Doug Terry talking through the details of how DynamoDB's transaction protocol works: [LINK] If we did publish more about the internals of DDB, what would you be looking to learn? Architecture? Operational experience? Developer experience? There's a lot of material we could share, and it's useful to hear where people would like us to focus.