This media is not supported in your browser
VIEW IN TELEGRAM
На сайте собраны вопросы разного уровня сложности: от базовых запросов до задач с JOIN, GROUP BY, подзапросами и оконными функциями. Формат ориентирован на реальные кейсы, такие задачи часто встречаются в работе и на собеседованиях. Удобный ресурс, чтобы закрепить знания.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍8🤝8
🚀 Yandex B2B Tech запускает сервис Managed Sharded PostgreSQL для горизонтального масштабирования PostgreSQL
PostgreSQL — самая популярная open-source СУБД, которой сегодня пользуются 55,6% профессиональных разработчиков. Но одна из главных её ограничений — отсутствие встроенного горизонтального масштабирования, что критично при обработке больших объемов данных.
Yandex B2B Tech решила эту задачу, запустив сервис , который позволяет шардировать PostgreSQL — то есть распределять данные по нескольким серверам. Это ускоряет работу систем, снижает риски и сокращает время вывода продуктов на рынок в 3-4 раза.
Технология уже проверена в реальных проектах Яндекса, таких как Яндекс ID, Яндекс Пэй и Едадил, а также успешно используется внешними клиентами.
Managed Sharded PostgreSQLдоступен на облачной платформе Yandex Cloud и помогает банкам и ритейлерам обрабатывать миллионы транзакций быстрее и надежнее.
Подробнее — ссылка
PostgreSQL — самая популярная open-source СУБД, которой сегодня пользуются 55,6% профессиональных разработчиков. Но одна из главных её ограничений — отсутствие встроенного горизонтального масштабирования, что критично при обработке больших объемов данных.
Yandex B2B Tech решила эту задачу, запустив сервис , который позволяет шардировать PostgreSQL — то есть распределять данные по нескольким серверам. Это ускоряет работу систем, снижает риски и сокращает время вывода продуктов на рынок в 3-4 раза.
Технология уже проверена в реальных проектах Яндекса, таких как Яндекс ID, Яндекс Пэй и Едадил, а также успешно используется внешними клиентами.
Managed Sharded PostgreSQLдоступен на облачной платформе Yandex Cloud и помогает банкам и ритейлерам обрабатывать миллионы транзакций быстрее и надежнее.
Подробнее — ссылка
CNews.ru
Yandex B2B Tech поможет банкам и ритейлерам обрабатывать миллионы транзакций быстрее и надежнее - CNews
Yandex B2B Tech запустила сервис для быстрого горизонтального масштабирования самой популярной опенсорсной базы данных...
❤4👎3👍2🔥2
Email должен быть уникальным только для активных пользователей?
Большинство реализуют это проверками в коде,
Сработает, если активного пользователя с таким email ещё нет:
Теперь email снова можно использовать для активных, без физического удаления строк.
🔥
➡️ SQL Ready | #совет
Большинство реализуют это проверками в коде,
SELECT перед INSERT, транзакциями или триггерами. PostgreSQL умеет делать это на уровне индекса:INSERT INTO users (email) VALUES ('a@b.com');Сработает, если активного пользователя с таким email ещё нет:
UPDATE users SET deleted_at = now() WHERE email = 'a@b.com';
Теперь email снова можно использовать для активных, без физического удаления строк.
Partial UNIQUE index — отличный способ фиксировать правила прямо в PostgreSQL.Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥7🤝7
🔥12👍7🤝7❤1
Знали, что агрегаты можно фильтровать без CASE и подзапросов?
Многие пишут
Фильтрация применяется к агрегатной функции, а не ко всей выборке:
Строки не исключаются из
Можно считать несколько независимых метрик за один проход по таблице:
Оптимизатор обычно сводит такой запрос к линейному плану.
🔥
➡️ SQL Ready | #совет
Многие пишут
COUNT(CASE WHEN ...), хотя в SQL (например, в PostgreSQL) есть более декларативный способ - FILTER.Фильтрация применяется к агрегатной функции, а не ко всей выборке:
COUNT(*) FILTER (WHERE status = 'paid')
Строки не исключаются из
FROM, а учитываются только внутри конкретного агрегата.Можно считать несколько независимых метрик за один проход по таблице:
COUNT(*) FILTER (WHERE status = 'failed')
Оптимизатор обычно сводит такой запрос к линейному плану.
FILTER работает не только с COUNT, но и с другими агрегатами:SUM(amount) FILTER (WHERE status = 'paid')
FILTER выразит намерение напрямую: агрегат считает только нужные строки, без лишней логики.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤12🤝8👍2
В этой статье:
• О системе обработки огромного потока форм — от поиска до подачи объявлений;
• Подробно объясняется, зачем команде нужен уровень надёжности SLI 99.99%;
• Описаны оригинальные подходы к версионированию данных, изоляции изменений;
• Приводятся реальные схемы работы с SQL/NoSQL, кэшами и стратегиями graceful degradation при отказах.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥8🤝8
Шпаргалка по оконным функциям и агрегатам для нумерации строк, поиска и анализа дубликатов, ранжирования результатов и аккуратного удаления лишних записей. Используется при очистке данных, аналитических запросах, построении рейтингов и подготовке данных к миграциям и отчётности.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥8🤝7
Как получить «последнюю запись на группу»?
Очень частая задача - взять последнюю запись на пользователя, заказ, сущность. Многие делают это с
Так первой будет именно самая свежая запись.
Если возможны одинаковые
Если нужно выбрать конкретные поля и избежать
Выражения из
🔥 Такой запрос часто читается проще, чем
➡️ SQL Ready | #совет
Очень частая задача - взять последнюю запись на пользователя, заказ, сущность. Многие делают это с
ROW_NUMBER(), хотя Postgres умеет проще:SELECT DISTINCT ON (user_id) *
FROM orders
ORDER BY user_id, created_at DESC;
DISTINCT ON оставляет первую строку в рамках группы, а порядок задаётся через ORDER BY:ORDER BY user_id, created_at DESC
Так первой будет именно самая свежая запись.
Если возможны одинаковые
created_at, лучше явно добавить тай-брейкер:ORDER BY user_id, created_at DESC, id DESC
Если нужно выбрать конкретные поля и избежать
SELECT *, просто укажите нужные колонки:SELECT DISTINCT ON (user_id)
user_id, id, created_at
FROM orders
ORDER BY user_id, created_at DESC, id DESC;
Выражения из
DISTINCT ON (...) обязаны быть левым префиксом ORDER BY, иначе Postgres выдаст ошибку.ROW_NUMBER(), и при подходящем индексе (user_id, created_at DESC, id DESC) может давать отличный план выполнения.Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤7🔥6🤝3
В системах бронирования одна из частых ошибок - это пересечение интервалов, когда один и тот же ресурс оказывается занят сразу несколькими пользователями.
Сегодня в задаче:
• Сравним бронирования одного ресурса между собой, не создавая дубликатов;
• Проверим пересечение временных интервалов с помощью канонического условия;
• Получим список конфликтующих бронирований, которые система должна блокировать.
Это базовый инструмент контроля данных в системах бронирования, календарях, слотах доставки и любых сервисах с ограниченными ресурсами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥13❤5🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
Этот сайт помогает анализировать структуры данных: деревья, графы, обходы и множество другого. Здесь нет решений задач или подготовкой к собеседованиям, упор именно на понимание того, как и почему всё устроено. Материал подается последовательно и концептуально, поэтому хорошо подходит даже новичкам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍9🤝7🔥2