Продолжаю продвигать новую связку и сегодня хочу рассказать вам о преимуществах использования поля с типом JSON в Supabase, которое недоступно в Bubble.
Если вы не знакомы с понятием JSON как таковым, то советую сначала заглянуть сюда.
JSON поле хранит информацию в текстовом виде и валидирует структуру сохраняемого в поле значения. (Вы не сможете сохранить не JSON)
Хранение JSON как фича в Postgres появилась не так уж давно - 10 лет назад VS 28 лет самому Postgres.
Из выступления одного из разработчиков на конференции я узнал, что эта фича наиболее используемая в Postgres, чем остальные.
Когда может понадобиться поле JSON:
1️⃣ Для хранения метаданных различного типа, которые используются только для отображения и не участвуют в поиске - информация о пользователе в профиле (пол, возраст и тд, что используется только для внутренней аналитики).
2️⃣ Для сохранения слепка данных, которые требуют аггрегации/джоинов в нескольких таблицах - к примеру данные о заказе со списком товаров и их характеристиками.
3️⃣ Метаданные с динамичной структурой - финансовые транзакции с разными наборами параметров в зависимости от типа (ACH vs Wire).
4️⃣ Хранение данных в JSON формате - сырые JSON ответы из сторонних API.
5️⃣ Запись логов событий - запись действий пользователя на сайте с разными параметрами (купил товар - ID товара, нажал на кнопку - расположение кнопки).
6️⃣ Действия пользователей в соцсетях - сложная древовидная структур ответов/комментариев/лайков на Reddit/Pikabu.
Кроме JSON типа, существует также тип JSONB, который хранит данные в бинарном виде. Он более оптимизирован для поиска/аггрегации/джоинов, а также RPC функций, поэтому я советую использовать именно его.
Таким образом JSON поля могут использоваться для упрощения и нормализации баз данных, чтобы не размывать таблицы необязательными полями.
Ставьте лайк и подписывайтесь, чтобы узнать больше о преимуществах использования Supabase как БД для Bubble.