🔥 Polars: шпаргалка
Polars ≠ Pandas. Это колоночный движок, вдохновлённый Rust и SQL. Никаких
🚀 Быстрый старт
📊 Выборка и фильтрация
• Комбинированные условия:
---
## ⚙️ Трансформации
• Вычисление новых колонок:
• Удаление/переименование:
•
🧠 Группировка и агрегаты
• Агрегация с кастомной функцией:
---
## 🪄 Ленивая обработка (LazyFrame)
✅ Всё оптимизируется *до выполнения* — pushdown, predicate folding, projection pruning.
🔥 Joins
Варианты:
📂 Работа с файлами
Ленивая загрузка:
---
## 🧮 Аналитика и окна
🧱 Структуры, списки, explode
• Работа с вложенными списками:
🧪 Полезные фичи
• Проверка типов:
• Проверка на null:
• Заполнение:
• Выбор n лучших:
📦 Советы и best practices
• Используй
• Избегай
• Сохраняй
•
✅ Polars: минимализм, скорость, безопасность.
Polars ≠ Pandas. Это колоночный движок, вдохновлённый Rust и SQL. Никаких
SettingWithCopyWarning — всё иммутабельно и параллелится.🚀 Быстрый старт
import polars as pl
df = pl.DataFrame({
"id": [1, 2, 3],
"name": ["Alice", "Bob", "Charlie"],
"score": [95, 85, 100]
})
📊 Выборка и фильтрация
df.filter(pl.col("score") > 90)
df.select(pl.col("name").str.lengths())
df[df["id"] == 2]
• Комбинированные условия:
df.filter((pl.col("score") > 80) & (pl.col("name").str.contains("A")))
---
## ⚙️ Трансформации
• Вычисление новых колонок:
df.with_columns([
(pl.col("score") / 100).alias("percent"),
pl.col("name").str.to_uppercase().alias("name_upper")
])
• Удаление/переименование:
df.drop("id").rename({"name": "username"})
•
apply() — только если нельзя обойтись иначе:
df.with_columns(
pl.col("score").map_elements(lambda x: x * 2).alias("doubled")
)
🧠 Группировка и агрегаты
df.groupby("name").agg([
pl.col("score").mean().alias("avg_score"),
pl.count()
])
• Агрегация с кастомной функцией:
df.groupby("name").agg(
(pl.col("score") ** 2).mean().sqrt().alias("rms")
)
---
## 🪄 Ленивая обработка (LazyFrame)
lf = df.lazy()
result = (
lf
.filter(pl.col("score") > 90)
.with_columns(pl.col("score").log().alias("log_score"))
.sort("log_score", descending=True)
.collect()
)
✅ Всё оптимизируется *до выполнения* — pushdown, predicate folding, projection pruning.
🔥 Joins
df1.join(df2, on="id", how="inner")
Варианты:
"inner", "left", "outer", "cross", "semi", "anti"📂 Работа с файлами
pl.read_csv("data.csv")
df.write_parquet("out.parquet")
pl.read_json("file.json", json_lines=True)
Ленивая загрузка:
pl.read_parquet("big.parquet", use_pyarrow=True).lazy()
---
## 🧮 Аналитика и окна
df.with_columns([
pl.col("score").rank("dense").over("group").alias("rank"),
pl.col("score").mean().over("group").alias("group_avg")
])
🧱 Структуры, списки, explode
df = pl.DataFrame({
"id": [1, 2],
"tags": [["a", "b"], ["c"]]
})
df.explode("tags")
• Работа с вложенными списками:
df.select(pl.col("tags").list.lengths())
🧪 Полезные фичи
• Проверка типов:
df.schema
df.dtypes
• Проверка на null:
df.filter(pl.col("score").is_null())
• Заполнение:
df.fill_null("forward")
• Выбор n лучших:
df.sort("score", descending=True).head(5)
📦 Советы и best practices
• Используй
lazy() для производительности.• Избегай
.apply() — если можешь, используй pl.col().map_elements() или векторные выражения.• Сохраняй
schema — удобно при пайплайнах данных.•
@pl.api.register_expr_namespace("yourns") — добавляй кастомные методы как namespace.✅ Polars: минимализм, скорость, безопасность.
❤12👍5🔥4🥱1
🛠️ Bob
• генератор кода
• ORM-подход
• гибкий конструктор SQL-запросов
📌 Что умеет Bob:
🔹 Генерация моделей и фабрик
Автоматически создаёт Go-код по схеме вашей базы данных. Ускоряет работу с моделями и минимизирует ручную писанину.
🔹 Поддержка PostgreSQL, MySQL, SQLite
Работает с самыми популярными базами данных — удобно для любых проектов.
🔹 Генерация типобезопасного кода из SQL
Как в
🔹 Гибкий конструктор запросов
Строит SQL-запросы на Go с читабельным синтаксисом — без ручной сборки строк.
🔹 Поддержка связей (associations)
Автоматически определяет связи между таблицами по внешним ключам. Включает
📚 Подробнее:
▪ GitHub: https://github.com/stephenafamo/bob
▪ Документация: https://bob.stephenafamo.com/docs/code-generation/intro
Если ты работаешь с Go и SQL — попробуй Bob. Это как
Bob — это универсальный инструмент для работы с SQL в Go, который сочетает в себе:• генератор кода
• ORM-подход
• гибкий конструктор SQL-запросов
📌 Что умеет Bob:
🔹 Генерация моделей и фабрик
Автоматически создаёт Go-код по схеме вашей базы данных. Ускоряет работу с моделями и минимизирует ручную писанину.
🔹 Поддержка PostgreSQL, MySQL, SQLite
Работает с самыми популярными базами данных — удобно для любых проектов.
🔹 Генерация типобезопасного кода из SQL
Как в
sqlc, но с поддержкой дополнительных ORM-фич.🔹 Гибкий конструктор запросов
Строит SQL-запросы на Go с читабельным синтаксисом — без ручной сборки строк.
🔹 Поддержка связей (associations)
Автоматически определяет связи между таблицами по внешним ключам. Включает
has-one, has-many, has-many-through и др.📚 Подробнее:
▪ GitHub: https://github.com/stephenafamo/bob
▪ Документация: https://bob.stephenafamo.com/docs/code-generation/intro
Если ты работаешь с Go и SQL — попробуй Bob. Это как
sqlc, но с усиленной ORM-магией.🤨5❤4👍4🔥2💊2❤🔥1🥱1
🗃️ Stoolap — лёгкая и быстрая SQL-база данных на чистом Go без зависимостей
Stoolap — это современный HTAP-движок (Hybrid Transactional/Analytical Processing), сочетающий OLTP и OLAP в одном ядре. Подходит как для транзакционных задач, так и для аналитики.
🚀 Возможности:
• Полностью написан на Go — никаких внешних зависимостей
• ACID-транзакции через MVCC
• Колонковое хранение с SIMD-ускорением
• Поддержка SQL: JOIN, агрегаты, оконные функции
• Встроенный тип JSON
• Поддержка
• CLI-режим и in-memory база
📦 Установка:
🔥 Быстрый старт (CLI):
📎 Репозиторий: https://github.com/stoolap/stoolap
🌐 Сайт: https://stoolap.io
@golang_google
Stoolap — это современный HTAP-движок (Hybrid Transactional/Analytical Processing), сочетающий OLTP и OLAP в одном ядре. Подходит как для транзакционных задач, так и для аналитики.
🚀 Возможности:
• Полностью написан на Go — никаких внешних зависимостей
• ACID-транзакции через MVCC
• Колонковое хранение с SIMD-ускорением
• Поддержка SQL: JOIN, агрегаты, оконные функции
• Встроенный тип JSON
• Поддержка
database/sql и интеграция с GORM • CLI-режим и in-memory база
📦 Установка:
go get github.com/stoolap/stoolap
🔥 Быстрый старт (CLI):
stoolap -db memory://
📎 Репозиторий: https://github.com/stoolap/stoolap
🌐 Сайт: https://stoolap.io
@golang_google
🔥5❤2👍1🤨1💊1
🚀 Представлен Apache Spark 4.0 — крупнейший релиз с момента запуска Spark 2.0
Databricks анонсировали Spark 4.0 с множеством фундаментальных улучшений производительности и архитектуры.
Новый релиз фокусируется на ускорении обработки, поддержке GenAI-нагрузок и расширенной масштабируемости.
🔥 Что нового:
• 💡 Project Tungsten++, Catalyst++ — переработка движка исполнения и оптимизации запросов
• 🧠 Поддержка генеративных AI-запросов — Spark теперь эффективнее работает с LLM-нагрузками
• ⚙️ Новый Execution Engine — более 2× ускорение в среднем, до 10× в некоторых кейсах
• 📦 Модульная архитектура — теперь ядро Spark отделено от MLlib, GraphX и др.
• 🌐 Поддержка нового Shuffle-движка и улучшенное распределение по кластерам
• 🧪 Обратная несовместимость — Spark 4.0 требует миграции, особенно для UDF и кастомных оптимизаций
📌 Подробности и тесты:
https://www.databricks.com/blog/introducing-apache-spark-40
@data_analysis_ml
Databricks анонсировали Spark 4.0 с множеством фундаментальных улучшений производительности и архитектуры.
Новый релиз фокусируется на ускорении обработки, поддержке GenAI-нагрузок и расширенной масштабируемости.
🔥 Что нового:
• 💡 Project Tungsten++, Catalyst++ — переработка движка исполнения и оптимизации запросов
• 🧠 Поддержка генеративных AI-запросов — Spark теперь эффективнее работает с LLM-нагрузками
• ⚙️ Новый Execution Engine — более 2× ускорение в среднем, до 10× в некоторых кейсах
• 📦 Модульная архитектура — теперь ядро Spark отделено от MLlib, GraphX и др.
• 🌐 Поддержка нового Shuffle-движка и улучшенное распределение по кластерам
• 🧪 Обратная несовместимость — Spark 4.0 требует миграции, особенно для UDF и кастомных оптимизаций
📌 Подробности и тесты:
https://www.databricks.com/blog/introducing-apache-spark-40
@data_analysis_ml
🥱5❤2👍1🔥1
Forwarded from Data Science. SQL hub
SQL_cheatsheet.pdf
754.9 KB
⚡️ SQL-шпаргалка, которая выручит в интервью, проекте и проде
Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.
Что внутри:
• 💬 Создание баз, таблиц и изменение схем
• 💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
• 💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
• 💬 VIEW, временные таблицы и работа с дубликатами
• 💬 Даты, строки, преобразования и агрегации
• 💬 Очистка данных, разбиение по разделителям
• 💬 UNION, INTERSECT, EXCEPT — управление сложными выборками
Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE
🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.
Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.
Что внутри:
• 💬 Создание баз, таблиц и изменение схем
• 💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
• 💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
• 💬 VIEW, временные таблицы и работа с дубликатами
• 💬 Даты, строки, преобразования и агрегации
• 💬 Очистка данных, разбиение по разделителям
• 💬 UNION, INTERSECT, EXCEPT — управление сложными выборками
Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE
🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.
Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
❤5👍5🔥1🤨1
🧩 SQL-задача с подвохом: "Сотрудники без продаж в 2024 году"
У тебя есть две таблицы:
📌 Задание:
Найди всех сотрудников, у которых не было ни одной продажи в 2024 году.
💣 **Подвох:**
Многие делают
А нужно — у кого не было продаж именно в 2024 году, даже если они были в 2023 или 2022.
💡 **Подсказки:**
• Отфильтруй
• Используй
• Ищи
---
✅ Решение с `LEFT JOIN`:
```sql
SELECTe.name
FROM employees e
LEFT JOIN (
SELECT * FROM sales
WHERE sale_date >= '2024-01-01' AND sale_date < '2025-01-01'
) s ONe.id = s.employee_id
WHERE s.id IS NULL;
```
---
🔄 **Альтернатива с `NOT EXISTS`:**
```sql
SELECT name
FROM employees e
WHERE NOT EXISTS (
SELECT 1
FROM sales s
WHERE s.employee_id = e.id
AND s.sale_date >= '2024-01-01'
AND s.sale_date < '2025-01-01'
);
```
---
🎯 Отличная задача, чтобы понять, **где правильно ставить фильтрацию по дате**, и чем `LEFT JOIN` отличается от `NOT EXISTS`.
У тебя есть две таблицы:
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR
);
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
employee_id INT,
sale_amount NUMERIC,
sale_date DATE
);
📌 Задание:
Найди всех сотрудников, у которых не было ни одной продажи в 2024 году.
💣 **Подвох:**
Многие делают
LEFT JOIN sales ON ... WHERE sale.id IS NULL, но это покажет только тех, у кого вообще не было продаж. А нужно — у кого не было продаж именно в 2024 году, даже если они были в 2023 или 2022.
💡 **Подсказки:**
• Отфильтруй
sales по дате (`2024-01-01` до `2024-12-31`) • Используй
LEFT JOIN или NOT EXISTS • Ищи
NULL только после фильтра---
✅ Решение с `LEFT JOIN`:
```sql
SELECT
FROM employees e
LEFT JOIN (
SELECT * FROM sales
WHERE sale_date >= '2024-01-01' AND sale_date < '2025-01-01'
) s ON
WHERE
```
---
🔄 **Альтернатива с `NOT EXISTS`:**
```sql
SELECT name
FROM employees e
WHERE NOT EXISTS (
SELECT 1
FROM sales s
WHERE s.employee_id =
AND s.sale_date >= '2024-01-01'
AND s.sale_date < '2025-01-01'
);
```
---
🎯 Отличная задача, чтобы понять, **где правильно ставить фильтрацию по дате**, и чем `LEFT JOIN` отличается от `NOT EXISTS`.
👍10🔥8😁2❤1🤨1
🧠 SkyRL-SQL — лёгкий RL-подход для Text-to-SQL от NovaSky, который превзошёл GPT-4o и o4-mini, обучаясь всего на 653 примерах!
📌 Что это:
SkyRL-SQL — это эффективный RL-фреймворк для генерации SQL-запросов из текста.
Модель
📊 Результаты на Spider-бенчмарках:
🔍 Особенности:
• RL-обучение по шагам с интерактивной проверкой
• Поддержка уточнения SQL на основе ошибок
• Обучение всего на 653 примерах
• Превосходит более крупные модели на практике
GitHub: https://github.com/NovaSky-AI/SkyRL
Блог: https://novasky-ai.github.io/posts/skyrl-sql
🧪 Отличный пример того, как можно бить гигантов с умной архитектурой, а не только размерами.
📌 Github
📌 Что это:
SkyRL-SQL — это эффективный RL-фреймворк для генерации SQL-запросов из текста.
Модель
SkyRL-SQL-7B обучена с нуля с использованием обучения с подкреплением (reinforcement learning), без гигантских датасетов.📊 Результаты на Spider-бенчмарках:
| Модель | Spider-Dev | Spider-Test | Realistic | DK | Syn | Среднее |
|--------------------|------------|-------------|-----------|------|------|---------|
| GPT-4o | 81.3 | 82.4 | 80.1 | 72.1 | 71.9 | 77.6 |
| o4-mini | 80.6 | 81.8 | 81.2 | 70.8 | 72.1 | 77.3 |
| **SkyRL-SQL-7B** | **83.9** | **85.2** | **81.1** | 72.0 | 73.7 | **79.2** |🔍 Особенности:
• RL-обучение по шагам с интерактивной проверкой
• Поддержка уточнения SQL на основе ошибок
• Обучение всего на 653 примерах
• Превосходит более крупные модели на практике
GitHub: https://github.com/NovaSky-AI/SkyRL
Блог: https://novasky-ai.github.io/posts/skyrl-sql
🧪 Отличный пример того, как можно бить гигантов с умной архитектурой, а не только размерами.
📌 Github
👍5❤4🔥2
Forwarded from Data Science. SQL hub
🛠️ Что нового в SQLite — свежие обновления и улучшения
🔗 https://www.sqlite.org/changes.html
SQLite — одна из самых популярных встраиваемых баз данных в мире, и каждое обновление приносит не только исправления, но и серьёзные улучшения производительности и безопасности.
Вот ключевые изменения из последних версий:
🆕 SQLite 3.46.0 (май 2024)
- Добавлена поддержка
- Новый флаг
- Оптимизации для
- Улучшено поведение
🧪 Расширенные тесты:
- SQLite теперь использует дополнительный fuzzing для анализа стабильности ядра при высоких нагрузках и необычных SQL
🧹 Также исправлены:
- Ошибки в индексах при сложной комбинации
- Утечка памяти при специфическом использовании
💡 SQLite остаётся одной из самых лёгких, надёжных и удобных баз данных, которую можно использовать буквально везде: от браузеров и мобильных приложений до IoT и CLI-утилит.
📚 Полный список изменений — здесь:
https://www.sqlite.org/changes.html
@sqlhub
🔗 https://www.sqlite.org/changes.html
SQLite — одна из самых популярных встраиваемых баз данных в мире, и каждое обновление приносит не только исправления, но и серьёзные улучшения производительности и безопасности.
Вот ключевые изменения из последних версий:
🆕 SQLite 3.46.0 (май 2024)
- Добавлена поддержка
contentless-delete для таблиц FTS5 — меньше места, выше скорость - Новый флаг
SQLITE_DBCONFIG_STMT_SCANSTATUS — можно отключать сбор статистики по выполнению запросов - Оптимизации для
LEFT JOIN + OR условий в WHERE — запросы выполняются заметно быстрее - Улучшено поведение
WITHOUT ROWID таблиц с составными ключами🧪 Расширенные тесты:
- SQLite теперь использует дополнительный fuzzing для анализа стабильности ядра при высоких нагрузках и необычных SQL
🧹 Также исправлены:
- Ошибки в индексах при сложной комбинации
JOIN + USING - Утечка памяти при специфическом использовании
PRAGMA function_list💡 SQLite остаётся одной из самых лёгких, надёжных и удобных баз данных, которую можно использовать буквально везде: от браузеров и мобильных приложений до IoT и CLI-утилит.
📚 Полный список изменений — здесь:
https://www.sqlite.org/changes.html
@sqlhub
❤3👍3🔥2🤨1
🔥 CTE + DELETE — это комбинация общего табличного выражения (Common Table Expression, CTE) и оператора DELETE, которая позволяет удобно удалять строки из таблицы, особенно в случаях, когда удаление зависит от сложного подзапроса или JOIN-ов.
🔍 Что такое CTE?
CTE (WITH выражение) — это временный набор данных, определённый перед основным SQL-запросом.
🧹 Зачем использовать CTE с DELETE?
Упрощает чтение и понимание кода при сложных условиях.
Позволяет использовать JOIN, ROW_NUMBER() и другие функции перед удалением.
Избавляет от подзапросов в WHERE, которые иногда трудно читать.
📌 Пример: Удалить дубликаты по email, оставив только один
🧠 Здесь:
CTE duplicates присваивает каждой строке номер внутри группы одинаковых email.
Удаляем все строки, где rn > 1 — то есть дубликаты.
📌 Пример: Удаление с JOIN
📌 Поддержка:
Работает в PostgreSQL, SQL Server, Oracle (с USING или WITH).
В MySQL с 8.0+ CTE поддерживаются, но DELETE с CTE может потребовать подзапрос.
🔍 Что такое CTE?
CTE (WITH выражение) — это временный набор данных, определённый перед основным SQL-запросом.
🧹 Зачем использовать CTE с DELETE?
Упрощает чтение и понимание кода при сложных условиях.
Позволяет использовать JOIN, ROW_NUMBER() и другие функции перед удалением.
Избавляет от подзапросов в WHERE, которые иногда трудно читать.
📌 Пример: Удалить дубликаты по email, оставив только один
WITH duplicates AS (
SELECT id,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
FROM users
)
DELETE FROM users
WHERE id IN (
SELECT id FROM duplicates WHERE rn > 1
);
🧠 Здесь:
CTE duplicates присваивает каждой строке номер внутри группы одинаковых email.
Удаляем все строки, где rn > 1 — то есть дубликаты.
📌 Пример: Удаление с JOIN
WITH to_delete AS (
SELECT u.id
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.status = 'cancelled'
)
DELETE FROM users
WHERE id IN (SELECT id FROM to_delete);
📌 Поддержка:
Работает в PostgreSQL, SQL Server, Oracle (с USING или WITH).
В MySQL с 8.0+ CTE поддерживаются, но DELETE с CTE может потребовать подзапрос.
👍12❤7😁2💊2🔥1
⚡️ RushDB — это мгновенная база данных, построенная на базе Neo4j, не требующая моделирования, конфигураций, нормализаций данных и идеально подходит для разработки приложений, DS/ML Ops и быстрого прототипирования.
🌟 Принимает любые данные формате JSON, JSONB и CSV, и самостоятельно нормализует данные, создавая связи между данными, расставляет типы данных и лэйблы на основе передаваемых данных.
☁️ Доступна в облаке и селф-хостед.
🛠 API-first и удобные SDK для разработчиков: Python и TypeScript
🚀 Отлично подходит для стартапов, AI-команд и всех, кто работает с графами
🔐 Лицензия: Apache-2.0
🟢 GitHub
🟢 Website
📖Docs
🌟 Принимает любые данные формате JSON, JSONB и CSV, и самостоятельно нормализует данные, создавая связи между данными, расставляет типы данных и лэйблы на основе передаваемых данных.
☁️ Доступна в облаке и селф-хостед.
🛠 API-first и удобные SDK для разработчиков: Python и TypeScript
🚀 Отлично подходит для стартапов, AI-команд и всех, кто работает с графами
🔐 Лицензия: Apache-2.0
📖Docs
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5❤4👍2🔥1
🚀 Вышел стабильный релиз MariaDB 11.8.2 — первая стабильная версия новой ветки с долгосрочной поддержкой (LTS, 5 лет). Также доступен предварительный релиз MariaDB 12.0.1.
🔹 Что нового в 11.8 по сравнению с предыдущим LTS 11.4:
🧠 Векторный поиск
Добавлены возможности из проекта *MariaDB Vector*:
• Новый тип данных
• Функции для сравнения векторов:
• Поддержка SIMD-ускорений: AVX2/AVX512, ARM, Power10
• Производительность векторных запросов выше Redis, pgvector, qdrant и weaviate
🧭 Поддержка времени до 2106 года
Решена проблема 2038 — TIMESTAMP теперь работает до 2106 года
🌍 Новая кодировка и локаль
По умолчанию теперь
Обновлены правила сортировки (Collation) до UCA 14.0.0
🔐 Новый механизм аутентификации: PARSEC
• PBKDF2 + ed25519
• Безопасная верификация пароля
💾 Многопоточность в дампе и импорте
•
• Поддержка резервного копирования как одной, так и нескольких БД
📈 Ускоренная репликация
• Новый механизм binlog-сегментации
• Асинхронный rollback после сбоев
• Параметр
🛠️ Новые фичи и команды
• Таблица
• Команды
• Возврат значений типа
• Поддержка Oracle-подобных SEQUENCE
• Функции
•
• Ограничения на размер временных файлов (`max_tmp_session_space_usage`, `max_tmp_total_space_usage`)
⚙️ Оптимизации
• Ускоренные
• Улучшена работа с виртуальными столбцами
• Авто-оптимизация кодировок
💡 Контекст
MariaDB — форк MySQL, с дополнительными хранилищами и расширенными возможностями, не зависящий от Oracle. Используется в RHEL, SUSE, Fedora, Debian, Arch и проектах вроде Wikipedia и Google Cloud SQL.
📌 Если вы работаете с векторным поиском, большими БД или вам важно долгосрочное сопровождение — MariaDB 11.8 теперь must-have.
https://mariadb.com/kb/en/mariadb-11-4-2-release-notes/
🔹 Что нового в 11.8 по сравнению с предыдущим LTS 11.4:
🧠 Векторный поиск
Добавлены возможности из проекта *MariaDB Vector*:
• Новый тип данных
VECTOR • Функции для сравнения векторов:
VEC_DISTANCE_EUCLIDEAN(), VEC_DISTANCE_COSINE(), VEC_DISTANCE() • Поддержка SIMD-ускорений: AVX2/AVX512, ARM, Power10
• Производительность векторных запросов выше Redis, pgvector, qdrant и weaviate
🧭 Поддержка времени до 2106 года
Решена проблема 2038 — TIMESTAMP теперь работает до 2106 года
🌍 Новая кодировка и локаль
По умолчанию теперь
utf8mb4, полная поддержка emoji Обновлены правила сортировки (Collation) до UCA 14.0.0
🔐 Новый механизм аутентификации: PARSEC
• PBKDF2 + ed25519
• Безопасная верификация пароля
💾 Многопоточность в дампе и импорте
•
mariadb-dump и mariadb-import теперь используют многопоточность • Поддержка резервного копирования как одной, так и нескольких БД
📈 Ускоренная репликация
• Новый механизм binlog-сегментации
• Асинхронный rollback после сбоев
• Параметр
slave_replication_delay_abort_timeout для отмены "зависших" транзакций🛠️ Новые фичи и команды
• Таблица
USERS для контроля доступа • Команды
FLUSH GLOBAL STATUS, REPAIR TABLE ... FORCE, SHOW CREATE SERVER • Возврат значений типа
ROW из хранимых процедур • Поддержка Oracle-подобных SEQUENCE
• Функции
UUID_v4, UUID_v7 •
FORMAT_BYTES(1000000000) = 953.67 MiB • Ограничения на размер временных файлов (`max_tmp_session_space_usage`, `max_tmp_total_space_usage`)
⚙️ Оптимизации
• Ускоренные
UPDATE/DELETE, SUBSTR(...) = const • Улучшена работа с виртуальными столбцами
• Авто-оптимизация кодировок
💡 Контекст
MariaDB — форк MySQL, с дополнительными хранилищами и расширенными возможностями, не зависящий от Oracle. Используется в RHEL, SUSE, Fedora, Debian, Arch и проектах вроде Wikipedia и Google Cloud SQL.
📌 Если вы работаете с векторным поиском, большими БД или вам важно долгосрочное сопровождение — MariaDB 11.8 теперь must-have.
https://mariadb.com/kb/en/mariadb-11-4-2-release-notes/
👍7❤2🥰2👀1
🎙️ ElevenLabs представила свою новую модель синтеза речи v3, которая стирает границы между искусственным и человеческим голосом. Новая архитектура позволяет тонко управлять эмоциями, интонациями и даже невербальными звуками вроде смеха или вздохов через специальные аудиотеги в тексте.
Из интересного: поддержка 70+ языков и режим диалога, где модель естественно обрабатывает перебивания и смену эмоций между персонажами. Это открывает новые возможности для создателей аудиокниг, игровых студий и разработчиков чат-ботов. Пока технология находится в раннем доступе, но уже сейчас можно сказать, что это огромный скачок в области TTS.
🔗 Ссылка - *клик*
Из интересного: поддержка 70+ языков и режим диалога, где модель естественно обрабатывает перебивания и смену эмоций между персонажами. Это открывает новые возможности для создателей аудиокниг, игровых студий и разработчиков чат-ботов. Пока технология находится в раннем доступе, но уже сейчас можно сказать, что это огромный скачок в области TTS.
🔗 Ссылка - *клик*
❤5👍4🤨3👏2🥰1🥱1
🦆 DuckDB + Python: мощный тандем для аналитики прямо на ноутбуке
Если вы работаете с аналитикой данных и вам важна скорость, гибкость и простота — попробуйте связку DuckDB + Python. Это встроенная колонко-ориентированная СУБД, которая отлично работает с pandas, Parquet и SQL-запросами — прямо в памяти, без сервера.
📌 Что такое DuckDB?
- Лёгкая SQL-база данных
- Работает как SQLite, но оптимизирована под аналитику
- Отлично справляется с файлами Parquet и Arrow
- Идеально для обработки больших наборов данных локально
🔗 Возможности интеграции с Python:
- Прямой запрос к pandas DataFrame:
- Работа с файлами:
- Использование SQL + pandas + визуализация в одном блоке
💡 Преимущества:
- 🚀 Быстрее pandas при агрегациях и фильтрации
- 🔗 Поддержка Parquet, CSV, JSON, Arrow и др.
- 🧠 SQL как первый язык аналитики — работает из коробки
- 🛠 Не требует отдельного сервера или установки СУБД
🧪 Это отличное решение для data science проектов, анализа больших логов, локальных ETL-задач и экспериментальной работы с данными.
🔍 Подробный гайд
#Python #DuckDB #DataAnalytics #Pandas #SQL #ETL
➡ SQL Community | Чат
Если вы работаете с аналитикой данных и вам важна скорость, гибкость и простота — попробуйте связку DuckDB + Python. Это встроенная колонко-ориентированная СУБД, которая отлично работает с pandas, Parquet и SQL-запросами — прямо в памяти, без сервера.
📌 Что такое DuckDB?
- Лёгкая SQL-база данных
- Работает как SQLite, но оптимизирована под аналитику
- Отлично справляется с файлами Parquet и Arrow
- Идеально для обработки больших наборов данных локально
🔗 Возможности интеграции с Python:
- Прямой запрос к pandas DataFrame:
con.execute("SELECT * FROM df WHERE col > 10").df()
- Работа с файлами:
con.execute("SELECT COUNT(*) FROM 'data.parquet'")
- Использование SQL + pandas + визуализация в одном блоке
💡 Преимущества:
- 🚀 Быстрее pandas при агрегациях и фильтрации
- 🔗 Поддержка Parquet, CSV, JSON, Arrow и др.
- 🧠 SQL как первый язык аналитики — работает из коробки
- 🛠 Не требует отдельного сервера или установки СУБД
🧪 Это отличное решение для data science проектов, анализа больших логов, локальных ETL-задач и экспериментальной работы с данными.
🔍 Подробный гайд
#Python #DuckDB #DataAnalytics #Pandas #SQL #ETL
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍4🥰1👏1
🔥 Успех в IT = скорость + знания + окружение
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
❤2👍1🔥1
Forwarded from Python/ django
py-pglite — обёртка PGlite для Python, позволяющая запускать настоящую базу PostgreSQL прямо при тестах. Без Docker, без настройки — просто импортируй и работай.
📌 Почему это круто:
- 🧪 Ноль конфигурации: никакого Postgres и Docker, только Python
- ⚡ Молниеносный старт: 2–3 с против 30–60 с на традиционные подходы :contentReference[oaicite:2]{index=2}
- 🔐 Изолированные базы: новая база для каждого теста — чисто и безопасно
- 🏗️ Реальный Postgres: работает с JSONB, массивами, оконными функциями
- 🔌 Совместимость: SQLAlchemy, Django, psycopg, asyncpg — любая связка :contentReference[oaicite:3]{index=3}
💡 Примеры установки:
pip install py-pglite
pip install py-pglite[sqlalchemy] # SQLAlchemy/SQLModel
pip install py-pglite[django] # Django + pytest-django
pip install py-pglite[asyncpg] # Асинхронный клиент
pip install py-pglite[all] # Всё сразу
🔧 Пример (SQLAlchemy)
python
def test_sqlalchemy_just_works(pglite_session):
user = User(name="Alice")
pglite_session.add(user)
pglite_session.commit()
assert user.id is not None
py‑pglite — идеальный инструмент для unit- и интеграционных тестов, где нужен настоящий Postgres, но без всей админской рутины.
Полноценный PostgreSQL — без его тяжеловесности.
▪Github
@pythonl
#python #sql #PostgreSQL #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🥰3
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
Модель заточена и оптимизирована для интеграции с Model Context Protocol (MCP).
📊 На SimpleQA (agentic / MCP) — Jan-nano набирает 80.7
Это серьёзный результат для модели такого размера!
Модель работает через Jan — open-source альтернативу ChatGPT, которая запускается локально.
🔍 Jan-nano — ещё один пример того, как компактные модели могут конкурировать с большими моделями благодаря обучению и агентной архитектуре.
▪ HF: https://huggingface.co/Menlo/Jan-nano
@ai_machinelearning_big_data
#LLM #JanNano #MCP #OpenSourceAI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4🔥3😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Database Build - инструмент для работы с базами данным с капелькой нейросетей
Можно написать «Создай базу для пиццерии» и получить готовую структуру с таблицами, связями и диаграммами.
Получившиеся таблицы можно править, генерить в них тестовые данные, а потом импортировать в SQL или задеплоить на Supabase (а скоро подвезут и AWS).
Это бесплатно
Можно написать «Создай базу для пиццерии» и получить готовую структуру с таблицами, связями и диаграммами.
Получившиеся таблицы можно править, генерить в них тестовые данные, а потом импортировать в SQL или задеплоить на Supabase (а скоро подвезут и AWS).
Это бесплатно
❤9👍4🔥2
🧠 Хитрая SQL-задача на собеседование: "Пропущенный день"
Представь таблицу заказов:
🎯 Задача: Найти пользователей, у которых были два заказа, сделанных с пропуском ровно одного дня
(например: 1 мая и 3 мая), но без других заказов между ними.
🛑 Не учитываются пары, где между ними был хоть один заказ.
---
💡 Решение с LEAD() + NOT EXISTS:
🔍 Подвох: многие находят заказы “через день”, но забывают проверить, не было ли чего-то между ними.
Такие задачки отлично проверяют знание оконных функций и аналитического мышления.
Представь таблицу заказов:
orders (
id INT,
user_id INT,
order_date DATE
)🎯 Задача: Найти пользователей, у которых были два заказа, сделанных с пропуском ровно одного дня
(например: 1 мая и 3 мая), но без других заказов между ними.
🛑 Не учитываются пары, где между ними был хоть один заказ.
---
💡 Решение с LEAD() + NOT EXISTS:
WITH ranked_orders AS (
SELECT
user_id,
order_date,
LEAD(order_date) OVER (PARTITION BY user_id ORDER BY order_date) AS next_order
FROM orders
),
valid_pairs AS (
SELECT
user_id
FROM ranked_orders ro
WHERE DATE_DIFF(ro.next_order, ro.order_date, DAY) = 2
AND NOT EXISTS (
SELECT 1 FROM orders o
WHERE o.user_id = ro.user_id
AND o.order_date > ro.order_date
AND o.order_date < ro.next_order
)
)
SELECT DISTINCT user_id FROM valid_pairs;
🔍 Подвох: многие находят заказы “через день”, но забывают проверить, не было ли чего-то между ними.
Такие задачки отлично проверяют знание оконных функций и аналитического мышления.
❤11👍5🔥2
🧠 Продвинутая SQL-задача: "Скользящий максимум с условиями"
Допустим, у вас есть таблица
🎯 Задача:
Для каждой транзакции нужно найти максимальный
- За последние 7 дней, включая текущую
- Только по этому же
- Только по статусу
📥 Ожидаемый вывод:
🧩 Решение:
⚠️ Подводные камни:
- Без индексов по
- Используется подзапрос, а не
- В PostgreSQL стоит учитывать точные границы
🚀 Навыки, которые проверяются:
- Оптимизация временных окон
- Группировка и фильтрация с условиями
- Агрегации по диапазонам
💡 Усложнение:
Хочешь ещё интереснее? Добавь группировку по разным
Допустим, у вас есть таблица
transactions:
CREATE TABLE transactions (
id SERIAL PRIMARY KEY,
user_id INT,
amount NUMERIC,
status TEXT,
created_at TIMESTAMP
);
🎯 Задача:
Для каждой транзакции нужно найти максимальный
amount:- За последние 7 дней, включая текущую
- Только по этому же
user_id - Только по статусу
'confirmed'📥 Ожидаемый вывод:
| id | user_id | amount | created_at | max_amount_last_7d |
|----|---------|--------|--------------------|---------------------|
| 1 | 101 | 100 | 2024-01-01 10:00 | 100 |
| 2 | 101 | 150 | 2024-01-04 12:00 | 150 |
| 3 | 101 | 120 | 2024-01-07 09:00 | 150 |
| 4 | 101 | 90 | 2024-01-15 14:00 | 120 |
🧩 Решение:
SELECT
t1.id,
t1.user_id,
t1.amount,
t1.created_at,
(
SELECT MAX(t2.amount)
FROM transactions t2
WHERE t2.user_id = t1.user_id
AND t2.status = 'confirmed'
AND t2.created_at BETWEEN t1.created_at - INTERVAL '7 days' AND t1.created_at
) AS max_amount_last_7d
FROM transactions t1;
⚠️ Подводные камни:
- Без индексов по
user_id, status, created_at запрос будет тормозить - Используется подзапрос, а не
window function, потому что окно — динамическое - В PostgreSQL стоит учитывать точные границы
BETWEEN при сравнении времени🚀 Навыки, которые проверяются:
- Оптимизация временных окон
- Группировка и фильтрация с условиями
- Агрегации по диапазонам
💡 Усложнение:
Хочешь ещё интереснее? Добавь группировку по разным
status, или перепиши на JOIN с LATERAL.🔥9❤6🥰2😱1