NULL: null BOOL: boolean S: string N: number B: binary SS: string set NS: number set BS: binary set L: list M: map
Slide 18
Slide 19
Eventually Consistent
Strongly Consistent
Transactional
Read per 4k
1/2 RCU
1 RCU
2 RCU
Write per 1k
1 WCU
2 WCU
Slide 20
Dual-key sharded design
Slide 21
Slide 22
Partition key value User ID
Possible values Uniformity Many
Good
Status code
Few
Bad
Timestamp, rounded to day, hour, etc
Few
Bad
Device ID, uniform traffic
Many
Good
Device ID, a few “hot” devices
Many
Bad
Status
ConditionExpression
created
#id <> :id and #did <> :did
started
#status = :current and #status <> :newStatus
queued
#status <> :final and #status <> :newStatus
finished
Slide 42
Search and filter
Slide 43
Slide 44
More race conditions
Slide 45
Status
Step
UpdateExpression
created
1
started
2
SET #status = :newStatus, #step = :step
queued
4
SET #status = :newStatus, #step = :step
error
128
SET #status = :newStatus, #step = :step
finished
+1
SET #status = :newStatus, #step = #step + :step