I found this approach shocking at first. After some time to get used to it I can see the advantages. With some experience I am now thinking about how to apply normalization concepts.
I'm still not sure where to draw the line on the single table. Should it be per application? Per account? Per collection? There are scaling benefits to going tall by distributing capacity units across more of the model.
On the other hand the idea of collections seems similar to foreign keys. In that case some kind of hybrid model where there is a DynamoDB table for each collection seems logical. But at that point I think we could still go "taller" and benefit from the shared capacity.
I'm still not sure where to draw the line on the single table. Should it be per application? Per account? Per collection? There are scaling benefits to going tall by distributing capacity units across more of the model.
On the other hand the idea of collections seems similar to foreign keys. In that case some kind of hybrid model where there is a DynamoDB table for each collection seems logical. But at that point I think we could still go "taller" and benefit from the shared capacity.
Food for thought.