Производительность приложений на Bubble. Заметки. Часть 12. Content Data Type.
Данная серия статей — это мои заметки по книге The Ultimate Guide to Bubble Performance. Тут изложено только то, что фиксировал я, т.к. посчитал это важным.
Что если мы делаем поиск только по одному типу данных, который содержит большой объём инфы и поля со списками?
Это может нехило грузануть как серверную так и клиентскую сторону.
Чтобы этого не случилось, можно поступить следующем образом:
В основной сущности хранить только данные, необходимые для поиска, а в другую вынести "тяжёлые" данные, такие как списки и объёмную инфу (к примеру, описание).
Например, мы хотим сделать поиск только по ресторанам (Restaurant).
Сущность Restaurant может содержать в себе списки с отзывами (reviews) и списки с фото (photo). Такие данные могут много весить, что плохо сказывается на скорости поиска данных и их подгрузке.
Мы оставим в сущности Restaurant только необходимые для поиска данные — название ресторана.
А вот "тяжёлые" данные вынесем в отдельную сущность RestaurantContent. Тут у нас будут храниться списки с фото, отзывами и описание.
У вас может возникнуть вопрос, который возник у меня, — а зачем вообще нужны поля с Photo и Review в сущности Restaurant?
Предположительно, если мы используем тип данных на странице Restaurant, и нам нужно на странице отображать фото и отзывы, то подгружаем в поля сущности Restaurant данные из RestaurantContent.
→ Пишите свои предположения в комменты.
Не столько важно, что автор хотел сказать этим набором полей, сколько важна суть — тяжёлые данные можем выносить, чтобы облегчить поиск и подгрузку данных на странице(!)
Когда используем подобный подход?
Когда Data Types хранят большие объёмы данных или содержат поля, которые часто используются при поиске.
Обновление разделенных данных
Если данные хранятся в разных Data Types, то нужно следить за тем, чтобы данные соответствовали друг другу. Если, например, мы меняем категорию ресторана в сущности Restaurant, то нужно обновить категорию и в сущности RestaurantContent.
В этом нам поможет Trigger на бэке, который будет автоматически обновлять категорию в RestaurantContent при изменении категории в сущности Restaurant:
Надеюсь, инфа изложена доступно :)
→ Подписывайтесь на мой канал в Телеграме Иван Некодит.