NIMAARKI.COM — PERSONAL SITE SHEET 02/06 — NOTES

← Notes

Why this site uses one DynamoDB table for everything

ENGINEERING/ 2026-08-29

Why this site uses one DynamoDB table for everything

This site stores every kind of content in one DynamoDB table: the site config, every Notes post, every bookmark, every page block. Not one table per content type.

The nimaarki-content DynamoDB table's own PK/SK structure, showing a Post, Bookmark, Skill, Page block, and the site config all as items in one table

DynamoDB rewards this. A single table with a well-chosen partition key and sort key handles very different item shapes just fine, as long as the access patterns are known ahead of time. I query by a prefix on the sort key: POST#, BOOKMARK#, PAGE#. That replaces joining across tables, since DynamoDB has no real join.

One table also means one DynamoDB Stream. Every change to any content, of any type, triggers the same rebuild function. I did not have to wire up a separate trigger per content type.

The tradeoff: a single table's items are less self-documenting than a table per type. I lean on Terms sections in this project's own specs to keep that readable.

For a site this size, one table is simpler to reason about, cheaper to run, and fast enough that I never think about performance.

43.6532N / 79.3832W — TORONTO, ON LinkedIn GitHub Contact