PostgreSQL má prvotřídní JSON podporu s JSONB.
Operátory¶
SELECT data->>’name’ FROM events; SELECT * FROM events WHERE data->>’type’=’click’; SELECT * FROM events WHERE data @> ‘{“type”:”click”}’; SELECT * FROM events WHERE data ? ‘email’;
Indexy¶
CREATE INDEX idx_data ON events USING GIN (data); CREATE INDEX idx_type ON events ((data->>’type’));
Manipulace¶
UPDATE users SET data=data||’{“verified”:true}’; UPDATE users SET data=data-‘temp’; UPDATE users SET data=jsonb_set(data,’{address,city}’,‘“Praha”’);
Kdy JSONB vs relační schéma¶
JSONB používejte pro semi-strukturovaná data s proměnlivým schématem — uživatelské preference, metadata, konfigurace nebo data z externích API. Pro pevně strukturovaná data s jasně definovanými vztahy zůstaňte u klasických relačních tabulek — budou rychlejší a typově bezpečnější.
GIN index na JSONB sloupci podporuje operátory @>, ?, ?| a ?&, což pokrývá většinu dotazovacích vzorů. Pro dotazy na konkrétní klíč (například data->>'type') vytvořte B-tree index na výraz. PostgreSQL 14+ přidal jsonb_path_query pro SQL/JSON path dotazy, které jsou standardizovanější a často čitelnější než tradiční operátory.
JSONB = flexibilita + výkon¶
GIN index pro rychlé dotazy.