Alright, let’s get our hands dirty with DynamoDB’s data model. Forget the rigid rows and columns of your relational database past; we’re working with a different beast here. It’s more like a super-flexible, JSON-like document store that just happens to live inside a massive, distributed key-value engine. The core concepts are simple, but their implications are everything.
At the highest level, you have Tables. These are just containers for your data, like a database table, but that’s about where the similarity ends. Inside a table, you have Items. An item is a single data record, and it’s essentially a collection of Attributes. Think of an item as a JSON object—a set of key-value pairs where the values can be strings, numbers, booleans, binary data, lists, or even nested maps (objects). There’s no enforced schema across items in the same table. One item can have 10 attributes, and the very next item in the same table can have 15 completely different ones. This is incredibly powerful and also a fantastic way to shoot yourself in the foot if you don’t have a clear access pattern in mind first.