3334 читали · 5 лет назад
Как работать с JSON (JSONB) в PostgreSQL
Здравствуйте, уважаемые подписчики и гости канала! Для начала - в Postgres есть два типа json и jsonb (более новый). Так вот, про json можете в принципе забыть и всегда использовать jsonb, так как он хранится на диске компактнее, является comparable типом, что позволяет его сравнивать и даже сортировать по это полю, хотя последнее в прикладных задачах вряд ли пригодится. Для тех, кто не знаком с этими типами данных сразу скажу, что это не то же самое, что сделать поле типа text. По данным json-полям фильтровать строки, для json можно ставить индексы на внутренности данных, прямо как в MongoDB...
Как выбрать GIN‑индекс для JSONB в PostgreSQL: jsonb_ops vs jsonb_path_ops
GIN‑индекс для JSONB в PostgreSQL выбирают в зависимости от типа запросов: jsonb_ops подходит для большинства операций, а jsonb_path_ops — для быстрых поисков по пути и фильтраций. При правильном выборе индекс ускорит запросы в среднем на 30 % и снизит нагрузку на сервер до 1500 руб. в месяц. GIN‑индекс с jsonb_ops индексирует каждый отдельный ключ и значение JSON‑документа, поэтому он эффективен для запросов, использующих операторы @>, ?, ?| и ?&. Такой индекс поддерживает любые типы запросов к JSONB, но требует больше места на диске (примерно 1...