Progres Post
301 subscribers
39 photos
1 video
17 files
204 links
Как собирать, анализировать и зарабатывать на данных.

Присылайте новости: @progrespost_bot

Редактор: @honeybalism
加入频道
800 SQL Questions.pdf
1 MB
Сборник из 800 вопросов по SQL, которые зададут на собеседовании

Вопросы и ответы по базовым и продвинутым темам: SQL-запросы, управление данными, оптимизация, администрирование и особенности различных версий Microsoft SQL Server вплоть до 2017.

Отправляйте друзьям, которые готовятся к интервью на позицию DBA или SQL-разработчика.

Веб-версия на Гитхабе.

#sql
🔥6❤‍🔥4👍1🤡1
Хакеры взломали Минфин США с помощью SQL-инъекции и особенностями юникода в PostgreSQL

Критическую уязвимость нашли в программе управления привилегированным доступом от компании BeyondTrust, которая использовала PostgreSQL.

Что за уязвимость?

Хакеры обнаружили проблему в вызове внутри библиотеки libpq функции pg_escape_string. Она отвечает за экранирование пользовательского ввода.

Они использовали два байта (c0 27), которые PostgreSQL принял за валидный юникод-символ. Так они внедрили неэкранированный апостроф и открыли себе возможность для SQL-инъекции.

Этот апостроф дал хакерам контроль над psql, CLI-интерфейсом PostgreSQL. Оттуда они использовали команду \! для выполнения произвольного кода на серверах Минфина.

Почему уязвимость не заметили раньше?

SQL-инъекции разбирают во всех учебниках, но эта оставалась незамеченной 9 лет, потому что:

- У PostgreSQL не было встроенной валидации юникод-символов в PQescapeStringInternal.

- Она представляла угрозу только в командной строке psql. Этот сценарий не рассмотрели.

Какова мораль?

В Минфине полностью положились на надежность экранирования апострофов и опрометчиво разрешили пользователю выполнять произвольные команды в psql.

Так не надо.

Никогда не передавайте клиентский код в psql, даже если считаете его проверенным. Всегда исходите из того, что один уровень защиты может быть обойден.

За комментарий спасибо Василию Пучкову, архитектору решений.

#sql #субд
👍13🔥511😱1
Третий сезон «Игры в кальмара» выйдет 27 июня 2025 года

Пока ждете, если ждете, можете окунуться в атмосферу сериала и поиграть:

Пройдите 9 испытаний в SQL Squid Game и попытайтесь остаться в живых.

#sql
🔥7❤‍🔥2
Как журналисты нашли должников за капремонт с помощью Pandas и SQLite

Журналисты издания «Деловой Петербург» изучили 20 тысяч отчетов Фонда капитального ремонта и выяснили, кто задолжал больше всего.

Разбираемся, как они анализировали данные.

На входе: архивы по 18 районам города, более 1000 html-файлов на каждый. В них информация о 2,8 млн помещений.

Очевидно, это результат выгрузки базы данных. Если бы к ней был доступ, все решалось бы SQL-запросами. Но доступа не было, так что пришлось работать с отчетами в html-файлах.

Напрашивающийся подход — прочитать таблицы с помощью read_html() в Pandas и объединить маленькие в одну большую.

Решение оказалось так себе:

Сперва индикатор tqdm показывал 5 минут на формирование единой таблицы. Когда индикатор подобрался к 20%, оставшееся время увеличилось уже до 30 минут, а скорость упала с 30 до 8 итераций в секунду. Затем прогноз оставшегося времени и вовсе вырос до 2 часов.

Медленно.

Причина задержки, судя по всему, в медленной работе метода append в Pandas. Попробовали без него: нашли решение с двойным преобразованием.

Подготовили пустой словарь-накопитель. Каждую прочитанную таблицу преобразовывали в словарь и добавляли к словарю-накопителю. Затем уже словарь-накопитель преобразовывали обратно в таблицу Pandas для анализа.

На все ушло 13 минут. Неплохо, но можно лучше.

Еще быстрее оказалась загрузка извлеченной из html-файлов информации в базу данных. Авторы обошлись без SQLAlchemy. Они напрямую отправляли несложные SQL-команды из Pandas в стандартный модуль SQLite.

На выполнение ушло 12 минут. Чуть быстрее варианта со словарем и намного быстрее первоначального подхода.

Что узнали?

Чаще всего за капремонт не платит бизнес. В центре Питера 85% задолженности образовано владельцами коммерческих помещений в многоквартирных домах.

Подробности читайте в статье на Хабре.

#sql #статьи
👍4🔥21
10 трюков с SQLite, которые отличают мидла от джуна

Внешне простой SQLite скрывает крутые возможности, которые упрощают и ускоряют разработку.

В статье на примерах разбирают 10 полезных трюков, которыми редко пользуются джуны:

1. Использование Virtual Tables

2. Индексация по выражениям: Index on Expressions

3. Использование Common Table Expressions с рекурсией

4. Стратегическое использование PRAGMA для настройки производительности

5. Транзакции внутри транзакций: SAVEPOINT

6. Сжатие базы на лету с VACUUM INTO

7. Использование кастомных функций на C / Python / JavaScript

8. Журналирование и аудит с помощью триггеров

9. Использование Row Value Comparison для сложных условий

10. Имитация CHECK CONSTRAINT на уровне выражений

Вы круты, если в статье не нашли для себя ничего нового. Отправьте знакомому джуну — ему будет полезно. Или проверьте компетенцию коллеги.

#субд #sql
👍3🔥3👌2🤡1
Может ли ИИ написать сложный SQL-запрос

Выясняем, каковы шансы сбыться у прогноза Gartner.

В статье автор сравнил свои SQL-запросы с теми, что написал ChatGPT. Формально нейросеть с задачей справилась, но есть нюансы:

- Когда смертный инженер пишет сложный запрос к БД, он учитывает контекст. Когда мы ставим задачу, то многое из того, что подразумевается, формально не произносится, и для нейросети это проблема.

- Если человек разумный все-таки учел в промпте все тонкости и подготовил четкую и детальную инструкцию, это ничего не гарантирует. Нейросеть может написать рабочий, но неоптимизированный и нечитабельный код.

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

Главный вывод:

Нельзя сравнивать качество запроса, написанного человеком, и запроса, который написал ИИ.

Какой код напишет человек, зависит только от его квалификации. Какой код напишет нейросеть, зависит от нее, а еще от квалификации того, кто составляет промпт.

Представим, что и человек, и нейросеть написали одинаково хороший код. Сделает это машину ровней венцу творения? Нет. Это будет значить только то, что написавший промпт для нейросети делает свою работу так же хорошо, как и написавший код.

#субд #ии #sql #статьи
👍4🔥4👌2💯2
Немного хардкорчика для SQL-спецов на вечер

Мы уже публиковали игры для изучения SQL.

Однако это другой уровень:

Datastar — обучающая многопользовательская текстовая космическая игра, полностью реализованная и запускаемая внутри базы данных PostgreSQL.

Игроки управляют действиями с помощью SQL-запросов, что делает игру одновременно учебной платформой для освоения SQL и увлекательным симулятором.

Механика

Игроки исследуют вселенную, торгуют, добывают ресурсы, улучшают корабли и соревнуются с другими игроками и NPC.

Геймплей

Выполняется через SQL-запросы (например, SELECT fly(3);), используя любой интерфейс PostgreSQL (например, psql или Edbit).

Цель

Заработать как можно больше денег, автоматизируя действия через скрипты и SQL-функции.

Глубина

Игра включает экономику, чат между игроками, таблицу лидеров, возможность скриптовать каждое действие и создавать автоматизированные стратегии.

Особенности

Можно сохранять исторические данные, создавать представления (VIEW), использовать автоматические команды (tick-commands), которые выполняются каждую игровую «тик-секунду».

Datastar — отличный способ погрузиться в практику SQL через геймплей и в то же время потренировать навыки анализа данных и оптимизации запросов.

Недостаток/преимущество

Datastar бесплатная, но чтобы поиграть, игру нужно будет развернуть у себя на машине.

Делитесь с друзьями и коллегами, которым уже некогда играть в Старкрафт.

#sql
👍13👾4❤‍🔥2🔥2
SQL Basics.pdf
102.8 KB
Если майские праздники пройдут по плану

И после вам понадобятся шпаргалки по SQL, вы знаете, где их найти.

- SQL для дата-аналитиков.

- Простые и сложные JOIN-операции.

- Оконные функции.

- SQL для самых маленьких.

Сохраняйте и поделитесь с коллегами.

#sql
👍65🔥32❤‍🔥1💯1
Как разные LLM справляются с преобразованием запросов на естественном языке в SQL

В Tinybird опубликовали результаты бенчмарка по генерации SQL-запросов для 22 популярных моделей.

Топ 5:

1. claude-opus-4

2. claude-3.7-sonnet

3. o3-mini

4. claude-3.5-sonnet

5. gpt-4.1

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

По клику на название модели в таблице можно посмотреть подробности результатов.

#ии #sql
❤‍🔥5👍4🔥3🏆3