sqlhub | Unsorted

Telegram-канал sqlhub - Data Science. SQL hub

36043

По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo

Subscribe to a channel

Data Science. SQL hub

🔥 Одна строка в конфиге ускорила production-ответ с 126–230 мс до менее чем 9 мс

Paweł Urbanek собрал очень практичный гайд по профилированию Rust, где оптимизации идут не по принципу «что интереснее», а по реальной отдаче.

Из кейсов:

N+1 SQL → 21 запрос превратили в один JOIN, функция ускорилась со 104 до 70 мкс.

Три последовательных HTTP-вызова → tokio::try_join!, итоговое время почти вдвое меньше.

Неправильно настроенный Brotli в maplibre/martin → скорость была всего 27,9 KB/s. Одна правка конфига дала примерно 57x ускорение, а latency упала до <9 мс.

Ещё жёстче кейс с write lock, который держали на всём HTTP round trip. После переноса блокировки P95 для читателей рухнул с 1,11 секунды до 9,42 мкс.

И отдельная классика Tokio: unbounded channel молча накопил 73 сообщения, потому что consumer не успевал. Никакой ошибки, просто медленное движение к OOM.

Полезный порядок из гайда:

сначала SQL и HTTP, потом locks и channels, и только после этого CPU profiling.

Потому что один лишний поход в базу обычно стоит дороже, чем сотни мелких оптимизаций внутри hot loop.

🔗 hotpath.rs/blog/profiling-rust-guide

#Rust #Performance #Profiling #Tokio #Backend

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

Data Science. SQL hub

🐘 SQL-совет, который многие игнорируют: не используй `COUNT(*)`, если тебе нужно только проверить существование строки.

Часто пишут так:


SELECT COUNT(*)
FROM orders
WHERE user_id = 42;


А потом проверяют, больше ли результат нуля.

Но базе приходится посчитать все совпадения, хотя тебе нужна всего одна информация: есть хотя бы одна строка или нет.

Лучше использовать:


SELECT EXISTS (
SELECT 1
FROM orders
WHERE user_id = 42
);


EXISTS может остановить поиск сразу после первого совпадения.

На маленькой таблице разницы почти не заметишь. На миллионах строк и частых проверках это уже может серьёзно экономить ресурсы.

Если нужен ответ «да/нет» — не заставляй SQL считать всё.

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

Data Science. SQL hub

🔥 PPT Master делает презентации из PDF, DOCX и сайтов прямо внутри Claude Code и Cursor. И на выходе это настоящий редактируемый PowerPoint

ppt-master работает как skill для AI-IDE. Можно просто написать: «сделай презентацию из этого PDF», после чего агент сам разбирает материал, продумывает структуру, собирает дизайн и экспортирует .pptx. Поддерживаются PDF, DOCX, URL и Markdown.

Самая сильная часть проекта в том, что слайды не превращаются в набор картинок. Текст, фигуры, таблицы и графики экспортируются как нативные объекты PowerPoint, которые можно открыть и вручную отредактировать. Есть шаблоны, live preview, анимации, speaker notes и даже генерация озвучки с последующим встраиванием аудио в PPTX.

Работает с Claude Code, Cursor, VS Code + Copilot и другими agent harness. Сам пайплайн выполняется локально, кроме обращений к выбранной AI-модели.

По сути:

PDF / DOCX / URL → AI-agent → структура → дизайн → настоящий editable .pptx

Автор отдельно пишет, что цель не заменить финальную ручную полировку, а убрать примерно 90% работы с пустого листа.

🔗 github.com/hugohe3/ppt-master

#AI #ClaudeCode #PowerPoint #Agents #OpenSource

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

Data Science. SQL hub

⚡ В SQLite есть кусок кода, который выглядит «грязно», но оставлен таким специально ради скорости.

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

Внутри — большой цикл диспетчеризации с почти 200 opcode.

И вот интересный момент: SQLite использует обычные goto, чтобы быстро прыгать между общими ветками выполнения.

В исходниках прямо написано:

«Код использует неструктурированные goto и выглядит не очень чисто. Но это сделано не из-за плохого стиля, так быстрее».

По замерам разработчиков, такой подход ускоряет sqlite3_step() примерно на 1,5%.

То есть здесь читаемость сознательно пожертвовали ради производительности.

Хорошее напоминание: в системном коде «красивее» не всегда значит «быстрее».

#SQLite #C #Databases #Performance #SystemsProgramming

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

Data Science. SQL hub

🚀 ИИ-агент ускорил SQLite до 59% меньше чем за 8 часов

Ускорить SQLite хотя бы на 5% уже было бы серьёзным результатом. Это один из самых зрелых и оптимизированных проектов в мире - его команда почти 20 лет выжимает из кода каждую долю производительности.

Но AI-агент KISS Sorcar менее чем за 8 часов и с затратами меньше $150 добился заметного ускорения сразу в нескольких типах нагрузки.

Результаты:

- 2,06× быстрее в официальном speedtest1 (~30 тыс. операций)
- 1,90× в TATP — транзакционная OLTP-нагрузка
- 1,30× в Star Schema Benchmark — аналитические запросы
- 1,25× в kvtest — работа с BLOB и дисковым I/O

Агент нашёл места, где стандартная конфигурация SQLite несла лишние расходы — особенно при записи транзакций на диск.

После этого он:

- изменил код и настройки
- прогнал бенчмарки
- проверил свои же изменения на ошибки
- сохранил совместимость с существующими тестами

Более миллиона тестов SQLite продолжают проходить.


анализ зрелой кодовой базы → поиск узких мест → изменение реализации → бенчмарки → проверка собственных решений.

GitHub:
https://github.com/ksenxx/sqlite-optimized/

Blog: https://kisssorcar.github.io/blog/sqlite-optimization-blog.html


#AI #SQLite #Programming #CodingAgents #Performance #OpenSource

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

Data Science. SQL hub

🚀 Neo4j без сервера: GraphForge запускает полноценный Cypher прямо внутри Python-скрипта

GraphForge занимает редкую нишу между NetworkX и серверными графовыми БД. Вы получаете встроенный графовый движок на Rust, полный openCypher и хранение проекта в обычной директории.

Что внутри:

- четыре независимых слоя на Rust: parser → IR → planning → execution;
- результаты сразу возвращаются как Apache Arrow Table;
- данные легко передаются в Pandas и Polars;
- постоянное хранение построено на Parquet;
- встроены PageRank, Louvain и гибридный текстово-векторный поиск;
- Python- и Node.js-биндинги работают поверх одного движка.


from graphforge import GraphForge

graph = GraphForge("research/")

result = graph.execute("""
MATCH (a)-[:CITES]->(b)
RETURN a.title, b.title
""")

print(result.to_pandas())


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

Python и Node.js доступны сейчас, Swift и Kotlin находятся в планах. Лицензия — Apache 2.0.

https://github.com/CurateLabs/graphforge

#RustLang #Python #OpenSource #GraphDatabase #DataScience #KnowledgeGraph

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

Data Science. SQL hub

🌟 WASTE: запускаем полную Kimi K3 на MacBook Pro с 64 ГБ памяти

SQLite AI собрала движок на 6000 строк C, который гоняет полновесную K3 без BLAS, CUDA и Python в рантайме.

Kimi K3 после предварительной конвертации из safetensors в формат, который движок умеет читать, занимает 982 ГиБ (диск бы назвал это 1,05 ТБ). В оперативную память она не влезает даже приблизительно.

WASTE держит в RAM только резидентную часть на 27,28 ГБ, а экспертов подтягивает с SSD ровно тогда, когда они понадобились. Скорость генерации выходит 0,49-0,54 токена в секунду. Веса при этом полные, без дистилляции и обрезки слоёв.

🟡Расчёт строится на устройстве MoE

На каждый токен K3 включает около 4% собственных весов - 16 экспертов в каждом из 92 слоёв. Простаивающему весу незачем сидеть в памяти, ему достаточно успеть подгрузиться вовремя.

Контейнер с моделью устроен так, что один эксперт стоит ровно одного чтения с диска - матрицы gate, up и down лежат вплотную, а сами эксперты хранятся в остаточном векторном квантовании (3 ступени кодбуков по 256 записей, 3 бита на вес), и матрица никогда не разворачивается целиком.

🟡Скорость диска

На один токен движок вычитывает 17 ГБ. Внутренний NVMe в MacBook выдаёт 12,78 ГБ/с, и модель успевает читать.

Внешний бокс по USB даёт 0,94 ГБ/с, и тот же токен считается 13 секунд. Вариант для очень терпеливых.

🟡Работа с памятью

Раздувать кэш экспертов выше 46 ГБ бесполезно и вредно - на 52 ГБ скорость падает втрое, на 58 ГБ в 8 раз.

Причина в том, что движок остаётся внутри своего бюджета, а система уже нет - macOS вытесняет кэш на диск, и попадание в память оборачивается обращением к подкачке. Поэтому по умолчанию WASTE не забирает все доступные ресурсы, а берёт на один рабочий набор экспертов меньше, чем мог бы.


Полтокена в секунду - это 30 секунд на одно предложение, но модели вчетверо меньше до сих пор запускают на серверах с терабайтом DDR5, а здесь почти 3 триллиона параметров отвечают без сети.

Если триллионы параметров не нужны, тот же движок крутит Kimi-Linear 48B из контейнера на 19 ГБ и выдаёт 10,7 токена в секунду - с этого проще начать знакомство.

Для K3 придётся освободить терабайт на диске и потратить около 5 часов на M5 Pro в три процесса, почти сутки - если гонять конвертацию чистым торчем.


Авторы, кстати, завели файл с опровергнутыми гипотезами и записали туда всё, что померили и выбросили.


📌Лицензирование: Apache 2.0 License.


🖥Github


@ai_machinelearning_big_data

#AI #ML #Inference #KimiK3 #WASTE #SQLiteAI

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

Data Science. SQL hub

«Сэр… всё кончено. Китайцы выложили веса Kimi K3 в открытый доступ»

Moonshot AI опубликовала Kimi K3 на Hugging Face — мультимодальную MoE-модель с 2,8 трлн параметров, из которых на токен активируются около 104 млрд.

Что внутри:

контекст до 1 млн токенов;
работа с текстом и изображениями;
длительные агентные задачи и вызов инструментов;
программирование, исследование репозиториев и работа с терминалом;
нативная квантизация MXFP4.

На Terminal-Bench 2.1 авторы заявляют 88,3 балла, а на FrontierSWE — 81,2. Результаты получены в собственном агентном окружении Kimi Code, поэтому сравнивать их нужно с учётом harness.

Веса доступны по лицензии Kimi K3 License. Это уже не экспериментальная модель «для посмотреть», а открытый 3T-класс, который можно разворачивать через vLLM или SGLang.

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

Data Science. SQL hub

✔️ Constella: локальная память для файлов, заметок и AI-агентов

Constella — open-source desktop-приложение, которое индексирует локальные файлы и превращает их в единую базу знаний для поиска и AI-агентов.

Данные хранятся на устройстве: LanceDB используется для векторов, SQLite — для метаданных и knowledge graph.

Что умеет:

- индексировать Obsidian, Documents, Downloads и любые выбранные папки;
- извлекать текст из PDF, DOCX, Markdown и изображений;
- строить семантический поиск по локальным данным;
- автоматически связывать заметки, темы и концепты;
- работать с локальными и облачными LLM;
- отдавать базу знаний через MCP в Claude Code;
- использовать агентов и переиспользуемые workflows.

Схема примерно такая:


Файлы

chunks + embeddings

LanceDB + SQLite

Knowledge Graph

поиск / агенты / MCP


https://github.com/Constella-OS/constella-desktop

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

Data Science. SQL hub

Рой ИИ-агентов написал аналог SQLite на Rust за несколько часов 🤯

Cursor провела необычный эксперимент: агентам выдали только официальную документацию SQLite объёмом 835 страниц и поручили с нуля реализовать собственный движок базы данных на Rust.

Без интернета, готового исходного кода и дополнительной помощи.

Уже через четыре часа получившиеся реализации правильно выполняли 73–85% запросов из скрытого теста. После дальнейшей работы некоторым командам удалось довести результат до 100%.

Но особенно удивила стоимость:

- связка Opus 4.8 и Composer 2.5 потратила около $1 400;
- Fable — примерно $20 000.

Одинаковая задача, но почти пятнадцатикратная разница в цене.

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

Получается, ИИ уже способен за часы собрать сложный системный проект, но митинги, конфликты и страх ответственности он тоже автоматизировал 😂

#ai #rust #sqlite #agents #programming

https://cursor.com/blog/agent-swarm-model-economics

@rust_code

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

Data Science. SQL hub

🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку

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

Окружение решает больше, чем кажется.

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

AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_1001_notes
Java: t.me/java_library
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: /channel/gamedev
Haskell: t.me/haskell_tg

Собеседования и карьера:

DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview

Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка Frontend: /channel/addlist/mzMMG3RPZhY2M2Iy

Полезное сверху:

ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: @courses
ИТ-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy

Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg

Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.

Пока кто-то листает шум, ты будешь видеть инструменты, задачи и идеи, которые помогают расти в профессии.

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

Data Science. SQL hub

Кто-то разобрал Claude Code почти до винтика

learn-coding-agent - репозиторий для тех, кто хочет понять, как устроены современные coding agents не на уровне промо-страниц, а на уровне архитектуры.

Автор собрал разбор Claude Code по публичным источникам: цикл агента, систему инструментов, разрешения, работу с контекстом, сессии, подпроцессы, MCP, удалённые настройки, телеметрию и скрытые флаги.

Получился не “гайд по использованию”, а карта внутренней логики CLI-агента: как он принимает решение, когда просит разрешение, как вызывает инструменты, как хранит историю и как расширяется через внешние интеграции.

https://github.com/justxor/Claudecourse/

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

Data Science. SQL hub

SQL-задача с подвохом: почему запрос вернёт 0 строк?

Есть таблицы:


users
id | name
1 | Anna
2 | Boris
3 | Dima



orders
id | user_id
1 | 1
2 | NULL


Нужно найти пользователей, у которых нет заказов.

Кто-то пишет так:


SELECT *
FROM users
WHERE id NOT IN (
SELECT user_id
FROM orders
);


Ожидание:


Boris
Dima


Но результат может быть:


0 rows


Подвох в `NULL`.

Подзапрос возвращает:


1, NULL


А выражение:


id NOT IN (1, NULL)


превращается в логическую ловушку. SQL не может точно сказать, что id не равен NULL, потому что NULL — это неизвестность.

Правильнее так:


SELECT *
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM orders o
WHERE o.user_id = u.id
);


Правило: если в подзапросе может быть NULL, осторожнее с NOT IN. Часто безопаснее использовать NOT EXISTS.

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

Data Science. SQL hub

Hibernate сгенерировал странный SQL, а ты не понимаешь, откуда он взялся?

У Vlad Mihalcea есть полезный приём: логировать не только сам SQL-запрос, но и stack trace места, где Hibernate его создал.

Для этого используется QueryStackTraceLogger из Hypersistence Utils.

Сценарий понятный:

* DBA нашёл медленный запрос
* в логах видно SQL
* рядом видно Java-цепочку вызовов
* по stack trace можно выйти на repository, service или controller

Это особенно полезно для расследования N+1, слишком частых запросов и тяжёлых SQL, которые внезапно появляются в проде.

В Spring Boot это подключается через STATEMENT_INSPECTOR, а затем включается DEBUG-логирование для Hypersistence Utils.

Итог: ты видишь не просто “какой SQL тормозит”, а кто именно в коде его породил.

https://vladmihalcea.com/source-sql-query-hibernate/

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

Data Science. SQL hub

Хотите развиваться в Data Science? Строить ML-продукты для миллионов пользователей? Авито и ведущие вузы страны открывают набор на две совместные магистратуры.

Для тех, кто хочет в Data Science«Прикладное машинное обучение и анализ данных» (МФТИ). Современные ML-подходы, работа с реальными данными Авито, эксперты компании и преподаватели МФТИ. Заявки до 12 июля.

Для тех, кто хочет работать над ML-продуктами«Машинное обучение в цифровом продукте» (НИУ ВШЭ). Полный цикл разработки ML-решений, практические кейсы Авито, преподаватели из индустрии. Заявки до 8 августа.

Что объединяет все три программы: эксперты Авито и вузов, реальные бизнес-задачи, сильное профессиональное сообщество и шанс попасть в Авито уже во время обучения.

Старт — в сентябре. Выбирайте программу и делайте шаг к карьере в IT вместе с Авито.

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

Data Science. SQL hub

🌟 Cohere Labs выложила компактную зрительно-языковую модель North Micro Vision

Модель на 2,4 млрд параметров стала самой маленькой в линейке VLM компании. От большинства таких моделей она отличается тем, что работает с изображением в исходном разрешении.

Обычно картинку перед подачей в модель сжимают, и мелкий текст, разметка таблицы и подписи на графике при этом теряются. Здесь пропорции сохраняются, а верхняя планка соответствует странице A4, отсканированной при 200 dpi.


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

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

🟡Архитектура

Зрительный энкодер на 400 млн параметров вырос из SigLIP 2 и держит исходное разрешение за счёт двумерного RoPE вместе с обученными одномерными позиционными эмбеддингами.

Языковая часть - собственная North Micro LLM на 2 млрд параметров, повторяющая архитектуру Command A+: три слоя внимания со скользящим окном и RoPE чередуются с одним глобальным слоем, который работает вообще без позиционных эмбеддингов.

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


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

🟡Тесты

Замеры проводили через VLMEvalKit, сравнивая с восемью моделями размером от 1,6 до 5,1 млрд параметров.

Сильнее всего North Micro Vision выглядит там, куда её и целили.

На DocVQA 0,921, на ChartQA 0,808, на AI2D 0,775, на RefCOCO 0,732 (втрое выше, чем у Ministral и Qwen3-VL).


Общий язык и рассуждение даются слабее.

На MMMU 0,329, худший результат в таблице; на MMLU и MMLU-Pro модель тоже уступает большинству соседей.



📌Лицензирование: Apache 2.0 License.


🟡Статья
🟡Модель
🟡Демо


@ai_machinelearning_big_data

#AI #ML #VLM #NorthMicroVision #Cohere

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

Data Science. SQL hub

🔥 Tailscale полгода ловила «невозможную» порчу SQLite. В итоге нашли баг, который жил в базе минимум 16 лет

В production у Tailscale начали случайно повреждаться SQLite-базы. Никакой стабильной причины: разные шарды, разная нагрузка, иногда между инцидентами проходили недели. За шесть месяцев компания поймала 19 случаев corruption.

После месяцев форензики вместе с core-разработчиками SQLite нашли причину: редкий race condition между записью и WAL checkpoint. При очень точном совпадении по времени SQLite мог решить, что страницы уже перенесены из WAL в основной файл, хотя этого не происходило. Часть данных исчезала, а база становилась повреждённой.

Баг получил название WAL-Reset. По оценке разработчиков SQLite, он существовал минимум 16 лет и был настолько редким, что для тестов пришлось специально писать код, который провоцирует нужную гонку. Tailscale ловила его чаще из-за агрессивного ручного checkpointing.

А дальше стало ещё веселее: версия SQLite 3.52.0 с исправлением обнаружила вторую проблему со stale expression indexes и начала выдавать ложные сообщения о corruption. Релиз отозвали, а фикс WAL-Reset перевыпустили в SQLite 3.51.3.

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

🔗 tailscale.com/blog/sqlite-wal-reset-bug

#SQLite #Database #Linux #Backend #Engineering

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

Data Science. SQL hub

Как SQLite выжимает скорость: байткод, VM и goto

Некрасивый код, который делает SQLite быстрым

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

Data Science. SQL hub

⚡️ SQL-приём: `GROUPING SETS` может заменить несколько тяжёлых `GROUP BY` + `UNION ALL`.

Допустим, нужно одновременно получить статистику:

- по стране и городу;
- только по стране;
- общий итог.

Часто пишут так:


SELECT country, city, SUM(revenue)
FROM sales
GROUP BY country, city

UNION ALL

SELECT country, NULL, SUM(revenue)
FROM sales
GROUP BY country

UNION ALL

SELECT NULL, NULL, SUM(revenue)
FROM sales;


Но SQL умеет это нативно:


SELECT
country,
city,
SUM(revenue) AS revenue
FROM sales
GROUP BY GROUPING SETS (
(country, city),
(country),
()
);


() означает grand total.

А если нужно понять, настоящий ли NULL лежит в данных или это строка итогов:


GROUPING(country)
GROUPING(city)


вернут 1 для колонок, которые были свернуты агрегированием.

🔥 Особенно полезно для:

OLAP-запросов;
аналитических отчётов;
дашбордов;
многоуровневых итогов;
запросов, где иначе появляется несколько почти одинаковых GROUP BY.

Ещё есть:


ROLLUP(...)
CUBE(...)


ROLLUP строит иерархические итоги, а CUBE - все комбинации измерений.

Если в аналитическом SQL у вас появляется цепочка из GROUP BY + UNION ALL, возможно, вы просто забыли про GROUPING SETS.

#SQL #PostgreSQL #DataEngineering #Analytics

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

Data Science. SQL hub

💡 SQL-трюк: сравнивайте `NULL` без костылей

В PostgreSQL обычное сравнение может неожиданно сломать условие:


SELECT NULL = NULL;


Результат:


NULL


Потому что NULL означает «неизвестное значение», а не конкретное значение.

Из-за этого часто пишут громоздкие условия:


WHERE a = b
OR (a IS NULL AND b IS NULL)


Но есть оператор, о котором многие забывают:


a IS NOT DISTINCT FROM b


Он работает как NULL-safe equality:


SELECT NULL IS NOT DISTINCT FROM NULL; -- true
SELECT 10 IS NOT DISTINCT FROM 10; -- true
SELECT 10 IS NOT DISTINCT FROM NULL; -- false


Есть и обратный вариант:


a IS DISTINCT FROM b


Например, удобно искать реально изменившиеся значения:


SELECT *
FROM old_data o
JOIN new_data n USING (id)
WHERE o.email IS DISTINCT FROM n.email;


Если оба email = NULL, строка не считается изменённой.

Без этого обычное:


o.email <> n.email


может просто вернуть NULL и пропустить изменение.

Особенно полезно при синхронизации данных, аудите изменений, ETL и UPSERT-логике.

#SQL #PostgreSQL #Database

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

Data Science. SQL hub

SQL-совет: `LATERAL` вместо тяжёлого оконного запроса

Нужно получить последнюю операцию каждого пользователя? В PostgreSQL можно не ранжировать всю таблицу через ROW_NUMBER().


SELECT
u.id,
last_order.id,
last_order.created_at
FROM users AS u
LEFT JOIN LATERAL (
SELECT id, created_at
FROM orders
WHERE user_id = u.id
ORDER BY created_at DESC
LIMIT 1
) AS last_order ON true;


LATERAL запускает подзапрос отдельно для каждой строки слева и разрешает обращаться к u.id.

Добавьте индекс:


CREATE INDEX ON orders (user_id, created_at DESC);


Тогда PostgreSQL сможет брать последнюю запись прямо из индекса, не сортируя все заказы пользователя.

Такой приём особенно полезен для задач:

- последняя операция пользователя;
- актуальный статус заказа;
- последнее событие устройства;
- последние N записей для каждой группы.

Для больших таблиц это часто быстрее и проще, чем оконная функция по всему набору данных.

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

Data Science. SQL hub

🤯 OPUS 5 ЗА 10 МИНУТ УДАЛИЛ ВСЮ БАЗУ ДАННЫХ, А ПОТОМ ВЕЖЛИВО ПРИЗНАЛ ОШИБКУ

Пользователь Reddit решил протестировать Claude Code. После одного запроса агент уничтожил базу проекта и сообщил: «Это моя вина, и я должен немедленно вам об этом сказать».

Позже Gemini 3.6 помог восстановить 96 страниц, ещё 21 пришлось пересоздавать. Автор уточнил, что это был тестовый проект с небольшим числом пользователей, поэтому последствия оказались не критичными.

Самое показательное: модель получила режим Always Allow, доступ к данным и возможность выполнять разрушительные команды без подтверждения.

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

ИИ-агенту в проде нужны минимальные права, отдельное окружение, снапшоты и ручное подтверждение любых DROP, DELETE и миграций.

Иначе вайб-кодинг быстро превращается в вайб-восстановление базы.

https://www.reddit.com/r/Anthropic/comments/1v9iurd/and_just_like_that_opus_5_ultracode_wipes_the/?solution=44899d8f83b98cbf44899d8f83b98cbf&amp;js_challenge=1&amp;token=7afd7253fec22262ff1c52b1703fe9ec98100ded527c5fb6747eed7511fb37a6&amp;jsc_orig_r=

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

Data Science. SQL hub

SQLite установлен практически везде. Но отправить туда обычный pull request у вас не получится.

SQLite работает на каждом iPhone и Android, в Chrome, Firefox, Safari, Windows, телевизорах, автомобилях и миллиардах других устройств. По оценке самого проекта, сейчас активно используется больше триллиона SQLite-баз.

И при этом SQLite принципиально остаётся проектом с очень маленькой командой разработчиков.

На официальном сайте это сформулировано прямо:

Open source, but not open-contribution.

Проект не принимает случайные pull request'ы и патчи из интернета. Чтобы код вообще мог попасть в SQLite, автор должен юридически передать свой вклад в public domain. Для этого существует отдельный подписываемый документ.

Причина не в высокомерии разработчиков. Так они защищают одну из главных особенностей SQLite: весь основной код должен оставаться свободным от чужих copyright-претензий.

Получился довольно редкий парадокс:

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

И эта модель работает уже больше 25 лет.

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

Data Science. SQL hub

SQL-совет: сравнивайте `NULL` через `IS NOT DISTINCT FROM`

Обычное сравнение ломается на NULL:


SELECT NULL = NULL;
-- NULL


Поэтому условие:


WHERE old_value = new_value


не считает два NULL равными.

В PostgreSQL используйте:


WHERE old_value IS NOT DISTINCT FROM new_value


Оператор работает как безопасный аналог =:


1 IS NOT DISTINCT FROM 1 -- true
NULL IS NOT DISTINCT FROM NULL -- true
1 IS NOT DISTINCT FROM NULL -- false


Полезно при сравнении версий строк, поиске изменений и синхронизации таблиц:


SELECT *
FROM old_data o
JOIN new_data n USING (id)
WHERE o.email IS DISTINCT FROM n.email;


Запрос вернёт строки, где значение действительно изменилось, включая переходы NULL → значение и значение → NULL.

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

Data Science. SQL hub

Хитрый SQL-совет: осторожнее с `NOT IN`

Кажется, что эти запросы делают одно и то же:


SELECT *
FROM users
WHERE id NOT IN (
SELECT user_id
FROM banned_users
);


Но если banned_users.user_id содержит хотя бы один NULL, запрос может вернуть ноль строк.

Надёжнее использовать NOT EXISTS:


SELECT u.*
FROM users AS u
WHERE NOT EXISTS (
SELECT 1
FROM banned_users AS b
WHERE b.user_id = u.id
);


Причина в трёхзначной логике SQL: сравнение с NULL даёт UNKNOWN, а не TRUE или FALSE.

Правило простое: если подзапрос потенциально возвращает NULL, вместо NOT IN почти всегда выбирайте NOT EXISTS.

#sql #postgresql #database

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

Data Science. SQL hub

SQL и Python есть: что часто отсекает на собеседовании

Классика вакансий на аналитика: SQL и Python на уровне «уверенно», статистика — «понимание методов A/B-тестирования и работы с большими выборками». Первые две галочки ставятся спокойно. Третья часто оказывается самым сложным местом на собеседовании.

Статистика и ML (машинное обучение) плохо ложатся на короткие курсы — они дают фрагменты, а не систему. Академическая программа работает иначе: серьезная математическая база плюс прикладные задачи по ML.

Именно так устроена совместная онлайн-магистратура karpovꓸcourses и НИУ ВШЭ «Аналитика больших данных». От ВШЭ — экспертиза и опыт одного из крупнейших вузов России, от karpovꓸcourses — практический опыт в сфере анализа данных.

21 июля в 18:00 мск проведут бесплатный День открытых дверей. На эфире разберут: из чего состоит программа, как устроена практика через тренажеры от karpovꓸcourses и как совмещать обучение с работой.

Ведут эфир Анатолий Карпов — основатель karpovꓸcourses, самый популярный эксперт в сфере аналитики данных (по данным NEWHR) — и Евгений Соколов, руководитель департамента больших данных и информационного поиска ФКН НИУ ВШЭ.

Присоединяйтесь по ссылке — после эфира всем участникам придет запись: https://clc.to/erid_2W5zFGPtHER

Реклама. ООО «КАРПОВ КУРСЫ». ИНН 7811764627. erid: 2W5zFGPtHER

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

Data Science. SQL hub

PostgreSQL переписали на Rust с нуля. И это уже не игрушечный прототип.

Проект pgrust заявляет, что новая реализация:

• проходит 46 066 запросов из regression-тестов PostgreSQL 18.3

• совместима с текущей директорией данных Postgres

• запускается в браузере как демо

Rust даёт безопасность памяти, а AI-assisted development помогает быстрее разбирать и переписывать огромную кодовую базу.

Самая дерзкая часть: авторы говорят о WIP-версии, которая пока не опубликована, но якобы даёт до +50% в transactional workloads и до 300x в аналитике.

Звучит почти слишком смело, поэтому к цифрам лучше относиться осторожно. Но сама идея мощная: взять одну из самых сложных СУБД в мире и пересобрать её на Rust, сохранив совместимость с PostgreSQL.

GitHub: https://github.com/malisper/pgrust

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

Data Science. SQL hub

🔥 Подтверди навыки работы с данными: сертификация Yandex Cloud со скидкой 50%

Коллеги, у кого в работе есть Yandex Cloud или кто хочет добавить весомый плюс в резюме — сейчас отличное время.

До 25 сентября включительно можно пройти сертификацию со скидкой 50%. Два уровня на выбор — под любой опыт.


Что доступно:

1️⃣ Data Engineer — подойдёт, если вы уже работаете с облачной платформой. Проверяют загрузку, обработку, ETL/ELT, оркестрацию и безопасность. Хороший базовый уровень для систематизации знаний.

2️⃣ Lakehouse Data Engineer — продвинутый вариант для тех, кто проектирует решения на архитектуре Lakehouse. Глубже, сложнее, солиднее для резюме.


Как проходит экзамен:
Онлайн, с прокторингом — запись на камеру, всё честно. Никаких сюрпризов.

📌 Успейте зарегистрироваться до 25.09.2026:
🔗ссылки

Потом цена вернётся к обычной — успевайте! 💪

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

Data Science. SQL hub

🌟 Контекст в PNG экономит токены до 70%

Pxpipe - локальный прокси, который перед отправкой запроса ассистенту превращает куски контекста в картинки.

Приём эксплуатирует особенность тарификации - текст стоит примерно один токен за символ, а изображение - фиксированное число токенов, зависящее только от размера в пикселях, а не от объёма текста внутри.

На плотном контенте в один визуальный токен удаётся упаковать около 3,1 символа.

🟡Механика

Прокси перехватывает запросы к Claude Code и рендерит в PNG самые объёмные и редко меняющиеся блоки (системный промпт, документацию инструментов и старую историю переписки).

Свежие сообщения и ответы модели идут обычным текстом.

Пример: около 48 тыс символов системного промпта и документации, которые как текст стоили бы примерно 25 тыс токенов, помещаются на одну PNG-страницу за ≈2700 токенов.

На Fable 5 стоимость сессии упала с 42 до 6 долларов.


🟡 Тесты

Fable 5 читает такие рендеры практически без потерь (100% на бенчмарке с новыми задачами), а вот Opus 4.7 и 4.8 ошибаются примерно на 7% изображений.

GPT 5.5 тоже деградирует на картиночном контексте, поэтому обе модели по умолчанию выключены и включаются вручную.

🟡Плата за экономию в потере точности

На методе lossy важные строки вроде хешей и идентификаторов при чтении с картинки могут исказиться.

Хуже когда промахи выглядят не как ошибки, а как правдоподобные выдумки.

Зрение модели это не OCR, изображение превращается в патч-эмбеддинги, и там, где пикселей не хватает, языковая модель просто достраивает похожее.


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

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


📌Лицензирование: MIT License


🖥GitHub


@ai_machinelearning_big_data

#AI #ML #LLM #Coding #Pxpipe

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

Data Science. SQL hub

📌Claude Code изменил чужую продакшен-базу

На GitHub появился любопытный тикет, который (если подтвердится) бьёт по базовой гарантии Антропик - изоляции пользователей друг от друга.

В рабочем контексте Claude Code внезапно оказались чужие учётные данные - IP и root открытым текстом от сервера, к которому автор не имеет никакого отношения.

🟡Дальше самое неприятное

Ассистент принял чужие креды за легитимные, подключился к серверу по SSH, перечислил Docker-контейнеры и базы PostgreSQL, после чего выполнил миграцию с операциями чтения и записи.

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

🟡Причина пока неизвестна

В тематических сообществах обсуждают версию сбоя изоляции кэша общих префиксов.

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


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

🟡Есть и куда более прозаичное объяснение

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

Пока Антропик не выпустила официального заключения, ни одну из версий нельзя ни подтвердить, ни отвергнуть.

Автоматика GitHub повесила на тикет метку security.


@ai_machinelearning_big_data

#news #ai #ml

Читать полностью…
Subscribe to a channel