Alex Code
142 subscribers
9 photos
19 links
Разработка, технологии, продукт, стартапы, управление и так далее
Download Telegram
Пагинация - основные способы и подводные камни

Пагинация — это метод разделения большого набора данных на порции. С точки зрения Frontend это всего лишь способ постранично вывести информацию. С точки зрения Backend пагинация скорее обязательна к использованию. Вместо передачи всего набора данных, сервер отправляет только малую часть, снижая нагрузку на БД и сеть, а так же улучшая общую пропускную способность и время отклика.

Если говорить о реализации, то выделяются 2 базовых способа:

1️⃣ Limit + Offset. Это самый распространенный метод пагинации, где используются параметры LIMIT и OFFSET из SQL-запросов (или аналоги из NoSQL БД). Например, SELECT * FROM users LIMIT 10 OFFSET 20 вернет 10 записей, начиная с 21-й. Этот подход очень прост в реализации. Основными недостатками являются: стремительное увеличение времени ответа с возрастание OFFSET и дублирование/пропуск части данных при их частом добавлении/удалении.

2️⃣ Курсорная пагинация, в которой обычно используется уникальный идентификатор последней полученной записи (курсор). Например, если сообщения в чате имеют строго возрастающие id, то запрос следующей порции сообщений получается через фильтрацию по id больше последнего загруженного (или меньше). Такой способ не начинает тормозить про отдаче 100500-ой страницы, а также стабильнее работает при частом создании/удалении данных.

Но дьявол кроется в деталях:

❗️При любом типе пагинации нельзя забывать про ограничения и дефолтное значение для параметра LIMIT. Без указания LIMIT многие БД будут отдавать все доступные данные... Чего вы явно не планируете для реально больших табличек 🤯

❗️Нельзя забывать про индексы в БД. Без индексов какую пагинацию не делай, а фильтрация и/или сортировка убьет любую скорость.

Используйте проверенные практики при реализации пагинации 🙏

До связи 🤟
👍6🔥4🤔1
Создатель Redis возвращется в проект!

Выложил на хабре перевод поста из блога Сальваторе Санфилиппо (оригинального автора in-memory db Redis). После 4.5 лет отсутствия Сальваторе решил вернуться к своему детищу и рассуждает о проблемах лицензирования, расколе в сообществе редис, нейронных сетят и LLM, RAG и векторном поиске и, конечно, о том, чем бы он мог быть полезен комьюнити и проекту в целом.

https://habr.com/ru/articles/878184/

Приятного чтения 😊
👍6🔥2🎉1
Переходим на Redis v8.0

Кажется, это первый за многие годы значимый релиз редиски! И вот почему:

История с лицензированием завершилась возвращением к "нормальной" Open Source лицензии - AGPLv3.

Команда проделала большую работу по оптимизации. Подробнее читайте у них в блоге, но ускорены как конкретные операции, так и общий latency снижен, общая пропускная способность увеличена. В общем чудо, бесплатное ускорение всем и каждому.

Наконец-то самые популярные доп. модули - такие как Search, Json, Bloom Filter - поставляются вместе с редисом из коробки. Это явный сдвиг парадигмы, в сторону более удобного и зрелого решения в духе "batteries included".

До связи 🤟
🔥8👍3🤯1