~/talk

JSON in PostgreSQL - evil data type or just needs to be tamed?

Talkat POSETTE: An Event for Postgres 2026 · 2026-06-16..06-18· [databases]
slides:none on file

Shows concrete fixes: extract IDs into columns so foreign keys work, add a unique index on JSON->>'id', and pull Frequently Updated Fields (likes/shares) out of big JSON to avoid MVCC bloat (1MB tuple grows to 4MB after repeated updates). Recommends indexing with GIN inverted indexes for arrays, pg_trgm trigrams for long text, and B-tree for scalar text; demonstrates casting + CHECKs to enforce types, and explains TOAST behavior and optional partitioning by JSON-derived country values.

AI-written summary · about

  1. 0:00Music & introduction
  2. 1:12The power of schema freedom
  3. 2:49Metal music use case with JSON objects
  4. 3:48Designing tables with JSONB columns
  5. 5:37Extracting ids for relational integrity
  6. 7:46Hybrid schema design with metal album reviews
  7. 9:04Indexing JSON for performance gains
  8. 13:09Trigram (pg_trgm) indexing for text search
  9. 15:06Enforcing types and constraints in JSON
  10. 19:13Schema changes and update tradeoffs
  11. 21:12Optimizing updates with “frequently updated fields”
  12. 23:21Key takeaways and design principles
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.