Теория· 8 мин· 10 XP
Что такое JSONB и зачем он нужен
PostgreSQL поддерживает два типа для хранения JSON: JSON и JSONB.
| Тип | Хранение | Запросы | Индексы |
|---|---|---|---|
JSON | Текст как есть | Медленнее | Нет |
JSONB | Бинарный формат | Быстрее | GIN индекс |
Всегда используйте JSONB — он эффективнее и поддерживает операторы для поиска.
Основные операторы
sql
-- -> возвращает JSONB (объект или массив)
profile->'social' -- {"github":"alice-dev"}
-- ->> возвращает TEXT
profile->>'level' -- senior
-- #> вложенный путь (JSONB)
profile#>'{social,github}' -- "alice-dev"
-- #>> вложенный путь (TEXT)
profile#>>'{social,github}'-- alice-dev
Пример
sql
SELECT
username,
profile->>'level' AS level,
profile->'social'->>'github' AS github
FROM users;
Поле profile в нашем датасете содержит:
json
{
"level": "senior",
"location": "Москва",
"skills": ["Python", "SQL", "PostgreSQL"],
"social": {"github": "alice-dev"},
"preferences": {"theme": "dark", "notify_email": true}
}
Прочитайте урок до конца — прогресс засчитается автоматически