Рубрика «postgresql»

Неделю назад прилетел тикет: «Страница заказов грузится вечность». Открыл — действительно, 12 секунд на первую загрузку. На проде. С реальными пользователями.

Спойлер: проблема была в том месте, куда я смотрел последним.

Что имеем

Типичный интернет-магазин на Django + PostgreSQL. Админка, где менеджеры смотрят список заказов. Таблица orders — примерно 800 тысяч записей, растёт на 2-3 тысячи в день.

Запрос, который дёргает страница:

SELECT * FROM orders 
WHERE status = 'pending' 
ORDER BY created_at DESC 
LIMIT 50;

Казалось бы, что тут сложного? LIMIT 50, да ещё и с фильтром по статусу.

Первые подозрения

Открыл EXPLAIN ANALYZEЧитать полностью »

Переход на UUID v7

Переход на UUID v7

В системах, где генерируются миллионы событий в день (например логи), первичные ключи часто строятся на основе UUID. Это логично: они глобально уникальны, не требуют централизованного генератора и хорошо масштабируются.

Читать полностью »

Это не история про «ИИ помог написать команду».
Это исследование момента, когда ИИ сам выполняет работу в инфраструктуре, меняя контексты исполнения.


Введение

Сейчас под «автономным ИИ» чаще всего понимают чат-бота, который:

  • подсказал команду

  • сгенерировал Terraform

  • помог найти флаг в документации

Это нулевой или первый уровень автономности.

Меня интересовал другой вопрос:

Может ли ИИ не советовать, а действовать — как инженер?

Не в симуляции.
А в реальном облаке, с реальными ВМ, SSH и последствиями.


Читать полностью »

В мире разработки есть негласное правило: не пишите свою криптографию. В финтехе должно быть похожее правило: не пишите свой леджер (ledger) на SQL, если планируете масштабироваться.

Меня зовут [Имя], и я хочу рассказать, как мы прошли классический путь «изобретения велосипеда», набили шишки на race condition-ах и в итоге поняли, что индустрии нужен не очередной необанк, а открытый стандарт финансового учета. Так появился проект Qazna.

В этой статье я не буду продавать вам продукт. Я покажу код, архитектурные решения и то, как мы пытаемся сделать «Linux для финансов».

Проблема: Ловушка UPDATE accounts

Читать полностью »

В одном из прошлых проектов случился «кошмар техлида»: в суматохе хотфикса было забыто добавление фильтра WHERE tenant_id = ? в одну из ручек API. В итоге один клиент увидел отчеты другого. Все быстро откатили, но я навсегда запомнил то холодное чувство в животе.

Когда начали проектировать архитектуру следующего проекта, я понял, что полагаться на внимательность разработчиков на код-ревью - это тупик. Рано или поздно кто-то устанет, ошибется, и данные снова протекут.

Искал способ гарантировать изоляцию данных так, чтобы ее физически нельзя было забыть.

Почему стандартные решения не подошли?

Читать полностью »

Это первая статья из цикла о построении CDC-пайплайна в домашней лаборатории.
Полный путь: Telegram → PostgreSQL → Debezium → Kafka → HDFS → DWH.
Но любой пайплайн начинается с данных — и эта статья про их получение.

Проблема

Хочу видеть свои расходы в нормальной аналитике, но банки не дают API для выгрузки операций. Можно руками вбивать каждую покупку в Excel — но это путь в никуда. Можно подключить агрегаторы типа Дзен-мани — но они требуют доступ к онлайн-банку, а я параноик.

Решение: скриншоты операций → распознавание → PostgreSQL → дальше CDC pipeline.

Кто я

Читать полностью »

Серия 1. Как всё начиналось. Долгий путь к собственному инструменту

1997 год – формирование коллекции

Сначала это были просто видеокассеты с любимыми фильмами — без особой системы, без структуры, без мысли о будущем.

Со временем их становилось всё больше. К началу нулевых, на пике своего размера, коллекция насчитывала около 450 видеокассет. И в какой-то момент возник вполне естественный вопрос: всё это нужно как-то систематизировать, завести хотя бы минимальный учёт.

Самым очевидным и доступным инструментом стал MS ExcelЧитать полностью »

После 10 лет внедрения BI-систем (Qlik Sense, Power BI, Data Lens) я понял одну вещь: дашборд — это не решение. Это данные для решения. А между данными и решением — пропасть, которую преодолевает человек.

В этой статье покажу, как построил RAG-систему с чат-интерфейсом для базы из 600 000 записей техники из Федресурса. Без философии — только архитектура, код и грабли.

Проблема: почему дашборды не работают

Типичный сценарий. Аналитик открывает дашборд с данными о технике в лизинге. Нужно найти топ-10 компаний с бензовозами в Московской области.

Что происходит:

  1. Ищет нужный дашборд (их 15 штук)

  2. Читать полностью »

В какой-то момент на старте в нашем data-сервисе (известная в узких кругах аналитическая платформа для селлеров WB/Ozon «Таблички») стало возникать много фоновых работ: ETL‑сенсоры, сложные API‑запросы к маркетплейсам, пересчёты витрин, обслуживание «сервисных» задач. К тому же добавилась потребность сгладить пики нагрузки на БД, растянув поступающую нагрузку во времени. Хотелось:

  • без отдельного брокера (Rabbit/Kafka) на старте,

  • с горизонтальным масштабированием воркеров,

  • с понятным «забрал задачу → обработал → отметил результат»,

  • чтобы падение воркера не превращало задачи в «вечные зомби»,

  • Читать полностью »

Цели

  • Настроить мониторинг managed PostgreSQL Yandex Cloud;

  • Деплой в k8s;

  • Сервис дисковеринг (экспортёр самостоятельно обнаруживает кластера и хосты БД);

  • Минимизировать нагрузку от экспортёра на БД и Victoria Metrics (собирать только нужные метрики с заданной частотой - т.к. не все метрики нужно пересчитывать при каждом скрейпе);

  • Избежать шумного поведения экспортёра (большой packet-rate на ноде).

Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js