❌

Normal view

Все русскоязычные стримы в Postgres раз в 10 минут: 2 млн строк вместо 30 млн и баг, в котором я три недели винил VK

Каждые 10 минут в русскоязычном эфире Twitch и VK Видео Live в среднем 7 200 каналов. Писать их как есть - больше миллиона строк в сутки. Я храню агрегаты, и за четыре недели вышло 2 млн строк. Расскажу, как это устроено и где я три недели искал проблему не там.

Я Максим, разработчик, вечерами пишу LanolStream - инструменты для стримеров, которые мы делаем вместе со стримершей lanolkid. Стримеры часто спрашивают «во сколько лучше стримить» и «много ли у меня зрителей для моей игры». Чтобы отвечать цифрами, а не ощущениями, нужен весь рынок, а не только наши каналы.

Читать далее

Почему pandas и ClickHouse считают разные перцентили на одних данных и как добиться совпадения

Один и тот же набор из десяти заказов, а p90 получается от 3900 до 12 500 рублей. В ноутбуке аналитика одна цифра, на дашборде другая, и даже повторный запуск запроса иногда меняет результат. Причина может скрываться в самой функции расчёта перцентиля — разберёмся, как разные инструменты выбирают значения и какой метод использовать, чтобы метрики можно было сравнивать.

Разобраться в перцентилях

Как построить self‑hosted RAG‑систему с LangGraph‑агентом на локальных LLM

Обычно стек для RAG‑систем и AI‑агентов строится вокруг облачных API (OpenAI, Anthropic) и управляемых векторных баз. Но для ряда задач критически важна полная автономность: устойчивость к санкциям и независимость от внешних провайдеров.

В этой статье я расскажу, как спроектировал и собрал аналитическую систему, которая за две недели работы агрегировала более 12 000 новостей: от сбора RSS‑лент до умного агента, который сам вызывает инструменты. Мы пройдем путь от архитектуры до граблей, на которые я наступил.

Стек: Python 3.12, FastAPI, PostgreSQL + pgvector, Celery, LangGraph, Ollama (Qwen 2.5 14B, BGE‑M3), Streamlit, Langfuse, Docker.

Читать далее

Что бэкапить в ИИ-приложении: модель, документы, индексы или историю диалогов?

Привет, Хабр! На связи Михаил Витко, менеджер PaaS-продуктов Рег.облака. Представим ситуацию. После восстановления ИИ-помощник принимает запросы и отвечает без ошибок. Но на вопрос о сроке возврата товара называет 14 дней вместо 30: база уже знает о новой редакции регламента, а поиск работает по старому индексу. Проверка доступности сервиса такую поломку не обнаружит.

В статье подробно разберем, как резервировать RAG-помощника по корпоративным документам и восстанавливать его части в согласованном состоянии. Тема обширная, поэтому мы разделили материал на две части. В первой поговорим о том, какие данные нужно сохранять, что можно пересоздать после сбоя и как организовать резервное копирование в S3, PostgreSQL и Kubernetes. А во второй обсудим, как восстановить приложение без рассогласования данных и проверить, что оно корректно работает после сбоя. 

Читать далее

Как я перешла из нормального Java‑проекта в команду по работе с данными, и что от меня осталось

Я Java-разработчик (по крайне мере, пытаюсь им остаться). Пришла в профессию без классического IT-бэкграунда, прошла очень много всяких разных курсов, пробовала изучать разные языки и парадигмы, и вот однажды мне повезло, и я нашла работу. Там приходилось доучиваться на ходу, через боль, Stack Overflow и фразу «а почему это работает?». Но в целом, я думала, будет гораздо сложнее, потому что вроде как почти со всеми задачами я справлялась легко. То есть, получается, что у меня получилось. На моём предыдущем проекте я разобралась в высоконагруженной системе, написала весомую часть бизнес-логики и, внимание, ничего не сломала. Я чувствовала себя вполне уверенно. Я понимала, куда и откуда текут данные, где точка входа, почему упал тест. Это было счастье (которое не ценилось, как всегда бывает).

А потом проект закончился. И я перешла в другую команду. В аналитический контур. В команду по работе с данными.

Я думала: ну, данные, трансформации, ETL. Логично. Интересно. Справлюсь.

Я не справляюсь. Я в шоке. И сейчас расскажу, почему.

Читать далее

Остатки нельзя обороты

IT драма с элементами комедии

Фриланс манит свободой — к черту офис! Теперь ты сам себе начальник! Однако свобода эта обманчива. Вот вроде сидишь ты, работаешь дома, тебе тепло и сухо, и начальства над тобой нет, и никто не мешает, ты один... совсем один. И отвечаешь за все ты. А время уже далеко за полночь, А код выкидывает исключения, а Django ORM отказывается вывозить нагрузку, а все варианты архитектуры сулят скорее минусы, а таймер биржи неумолимо тикает. Тик‑тик‑тик... И нужно уже что‑то решать, но помочь некому — психов нет.

Читать далее

Поддержка нескольких реляционных СУБД в одном проекте: PostgreSQL и MSSQL

Как поддерживать PostgreSQL и MSSQL в одном приложении, сохраняя единую кодовую базу?

На примере iLocks Online разбираем выбор провайдера в EF Core, отдельные наборы миграций, различия в последовательностях, типах данных и именовании объектов. Рассказываем, что необходимо проверять на обеих СУБД и почему подключения двух провайдеров недостаточно для полноценной совместимости.

Читать кейс

Как не занизить D30 retention: незрелые когорты и расчёт на SQL

Представим: в отчёт добавили новые регистрации, и общий D30 retention снизился с 20% до 10%. При этом ни один из пользователей, для которых D30 уже наступил, не изменил своё поведение. Ошибка может оказаться в знаменателе: туда попали люди, чей тридцатый день ещё впереди.

Разберём эту ситуацию на условных данных и воспроизведём расчёт в SQLite. Отдельно проверим три случая: пользователь вернулся, пользователь не вернулся и результат пока нельзя измерить.

Читать далее
❌