This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня на практике разбирался с обработкой ошибок в SQL.
Что сделал:
→ Написал хранимую процедуру для добавления заказов в базу данных Sales
→ Обернул её в блок TRY/CATCH
→ При ошибке сохраняются точные значения ERROR_MESSAGE() и ERROR_NUMBER()
→ Никаких тихих падений и гаданий. База данных сама сообщает, что пошло не так.
Почему это важно:
→ Пайплайны ломаются
→ Данные бывают грязными
→ Ошибки неизбежны
Пайплайн без обработки ошибок — это пайплайн, которому нельзя доверять.
В этом и разница между SQL-кодом, который работает на твоём ноутбуке, и SQL-кодом, который выдерживает продакшен.
#DataEngineering #BuildInPublic #SQL
👉 @SQLPortal
Что сделал:
→ Написал хранимую процедуру для добавления заказов в базу данных Sales
→ Обернул её в блок TRY/CATCH
→ При ошибке сохраняются точные значения ERROR_MESSAGE() и ERROR_NUMBER()
→ Никаких тихих падений и гаданий. База данных сама сообщает, что пошло не так.
Почему это важно:
→ Пайплайны ломаются
→ Данные бывают грязными
→ Ошибки неизбежны
Пайплайн без обработки ошибок — это пайплайн, которому нельзя доверять.
В этом и разница между SQL-кодом, который работает на твоём ноутбуке, и SQL-кодом, который выдерживает продакшен.
#DataEngineering #BuildInPublic #SQL
Please open Telegram to view this post
VIEW IN TELEGRAM
В Oracle AI Database 26ai теперь можно определять функции и модули на JavaScript прямо в базе данных.
Это позволяет публиковать JavaScript-код, который затем можно вызывать напрямую из SQL.
#JavaScript #OracleDatabase #SQL #MLE
👉 @SQLPortal
CREATE FUNCTION ... MLE LANGUAGE JAVASCRIPT ...
CREATE MLE MODULE ... LANGUAGE JAVASCRIPT ...
Это позволяет публиковать JavaScript-код, который затем можно вызывать напрямую из SQL.
#JavaScript #OracleDatabase #SQL #MLE
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Написать медленный запрос в Postgres сегодня гораздо сложнее, чем раньше. Запрос может содержать полное сканирование таблицы, крупную сортировку или дорогую агрегацию, но всё равно выполняться быстро. Современный Postgres просто подключает параллельных воркеров.
Параллелизм скрывает стоимость тяжёлых запросов, но не устраняет её. Индексы и механизмы кэширования уменьшают объём работы, который нужно выполнить.
Параллельное выполнение всё равно делает тот же объём работы — оно лишь распределяет его между несколькими процессорами. Воркеры позволяют задействовать больше CPU, но не сокращают количество операций. Если запрос выполняет полное сканирование таблицы, он всё равно прочитает всю таблицу. Просто сделает это быстрее за счёт дополнительных CPU.
На первый взгляд безобидный запрос:
Предположим, что индексов нет, таблица
Параллельный конвейер Postgres
Postgres разделил таблицу на три части, выполнил агрегацию параллельно и затем объединил результаты.
[см. изображение с выводом EXPLAIN ANALYZE]
результаты объединяются через
Несмотря на высокую скорость выполнения, это не лучший вариант для OLTP-базы данных.
При высокой конкурентной нагрузке пул воркеров становится узким местом. Запрос может работать быстро, пока ресурсов хватает, но заметно замедляться при конкуренции за CPU. Запросы с нестабильным временем выполнения — хорошие кандидаты для оптимизации.
Параллельные воркеры не заменяют здоровую архитектуру базы данных:
Добавляйте индексы, чтобы избежать полного сканирования таблиц и дорогостоящих сортировок.
Используйте summary-таблицы или materialized view, чтобы не выполнять тяжёлые агрегации на больших объёмах данных.
Разбивайте time-series таблицы на партиции, чтобы уменьшить объём данных, который приходится сканировать в типовых запросах.
👉 @SQLPortal
Параллелизм скрывает стоимость тяжёлых запросов, но не устраняет её. Индексы и механизмы кэширования уменьшают объём работы, который нужно выполнить.
Параллельное выполнение всё равно делает тот же объём работы — оно лишь распределяет его между несколькими процессорами. Воркеры позволяют задействовать больше CPU, но не сокращают количество операций. Если запрос выполняет полное сканирование таблицы, он всё равно прочитает всю таблицу. Просто сделает это быстрее за счёт дополнительных CPU.
На первый взгляд безобидный запрос:
SELECT
user_id,
count(*) AS total_events
FROM events
GROUP BY user_id
ORDER BY total_events DESC
LIMIT 10;
Предположим, что индексов нет, таблица
events содержит 1 000 000 строк и 10 000 уникальных user_id. Такой запрос выполняет большой объём работы. В любом случае ему придётся прочитать каждую строку таблицы.Параллельный конвейер Postgres
Postgres разделил таблицу на три части, выполнил агрегацию параллельно и затем объединил результаты.
[см. изображение с выводом EXPLAIN ANALYZE]
loops=3 для Seq ScanWorkers Launched: 2 (лидирующий процесс + 2 воркера = всего 3 процесса)Partial HashAggregate выполняется в каждом воркеререзультаты объединяются через
Finalize HashAggregate в лидирующем процессеНесмотря на высокую скорость выполнения, это не лучший вариант для OLTP-базы данных.
При высокой конкурентной нагрузке пул воркеров становится узким местом. Запрос может работать быстро, пока ресурсов хватает, но заметно замедляться при конкуренции за CPU. Запросы с нестабильным временем выполнения — хорошие кандидаты для оптимизации.
Параллельные воркеры не заменяют здоровую архитектуру базы данных:
Добавляйте индексы, чтобы избежать полного сканирования таблиц и дорогостоящих сортировок.
Используйте summary-таблицы или materialized view, чтобы не выполнять тяжёлые агрегации на больших объёмах данных.
Разбивайте time-series таблицы на партиции, чтобы уменьшить объём данных, который приходится сканировать в типовых запросах.
Please open Telegram to view this post
VIEW IN TELEGRAM
В SQL можно объединять таблицы по одинаковым именам колонок через:
Но здесь есть неприятная ловушка
Такой запрос:
будет работать, если
Проблемы начинаются позже.
Если в будущем кто-то добавит колонку
Причина в том, что
Именно поэтому многие разработчики предпочитают более явный вариант:
Кода чуть больше, зато зависимость от структуры таблиц становится очевидной и предсказуемой.
Лукас Эдер показывает этот кейс на простом примере и напоминает, что некоторые удобные сокращения в SQL могут обернуться проблемами спустя месяцы или годы.
https://blog.jooq.org/why-join-using-can-lead-to-errors-in-sql/
👉 @SQLPortal
t1 JOIN t2 USING (c1)
Но здесь есть неприятная ловушка
Такой запрос:
t1
JOIN t2 USING (c1)
JOIN t3 USING (c2)
будет работать, если
c2 есть только в t2 и t3.Проблемы начинаются позже.
Если в будущем кто-то добавит колонку
c2 в t1, запрос внезапно перестанет работать или начнёт вести себя не так, как ожидалось.Причина в том, что
USING опирается на имена колонок, а не на явные ссылки на таблицы. Изменение схемы может неожиданно повлиять на уже существующие JOIN'ы.Именно поэтому многие разработчики предпочитают более явный вариант:
t1
JOIN t2 ON t1.c1 = t2.c1
JOIN t3 ON t2.c2 = t3.c2
Кода чуть больше, зато зависимость от структуры таблиц становится очевидной и предсказуемой.
Лукас Эдер показывает этот кейс на простом примере и напоминает, что некоторые удобные сокращения в SQL могут обернуться проблемами спустя месяцы или годы.
https://blog.jooq.org/why-join-using-can-lead-to-errors-in-sql/
Please open Telegram to view this post
VIEW IN TELEGRAM
Java, SQL and jOOQ.
Avoiding SQL Ambiguities caused by JOIN USING and NATURAL JOIN
Discover the pitfalls of using SQL's NATURAL JOIN and JOIN USING syntax. Learn best practices for joining tables in production queries.
❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
DBeaver уже 15 лет остаётся де-факто стандартом среди SQL-клиентов.
Инструмент мощный, но это ещё и тяжёлый Java-монолит, который может запускаться по 20 секунд.
Кто-то решил переписать его с нуля на Rust и добавить возможности, которых в DBeaver никогда не было.
Проект называется Tabularis. 2.5 тыс. звёзд. Лицензия Apache 2.0. Последняя активность — 17 часов назад.
Самое интересное:
Tabularis создал один разработчик — Debba — как эксперимент по AI-assisted разработке.
Цель была простой: проверить, насколько далеко AI-агенты способны зайти при создании реального продукта.
В итоге получилось 55 релизов, 1192 коммита и SQL-клиент, который уже конкурирует с продуктами компаний, где над подобными инструментами работают десятки инженеров.
Что есть в Tabularis, а в DBeaver нет:
✅ Встроенный MCP-сервер — Claude, Cursor и Windsurf могут читать схему БД и выполнять запросы прямо из чата
✅ SQL Notebooks с графиками внутри ячеек и общими переменными между ними
✅ Визуальный EXPLAIN с AI-анализом плана выполнения
✅ Визуальный конструктор запросов с drag-and-drop JOIN'ами
✅ Автоматическая генерация ER-диаграмм
✅ Поддержка PostgreSQL, MySQL/MariaDB, SQLite и ClickHouse через плагины
✅ Редактор на базе Monaco с интеллектуальным автодополнением
✅ Без телеметрии, аккаунтов и подписок
Чего пока нет в Tabularis, но есть в DBeaver:
❌ SQL Server
❌ Oracle
Если работаешь с ними, DBeaver пока остаётся более очевидным выбором.
Во всех остальных случаях Tabularis запускается примерно за 2 секунды, занимает меньше ресурсов и позволяет AI-агентам работать с базой напрямую.
https://github.com/TabularisDB/tabularis
👉 @SQLPortal
Инструмент мощный, но это ещё и тяжёлый Java-монолит, который может запускаться по 20 секунд.
Кто-то решил переписать его с нуля на Rust и добавить возможности, которых в DBeaver никогда не было.
Проект называется Tabularis. 2.5 тыс. звёзд. Лицензия Apache 2.0. Последняя активность — 17 часов назад.
Самое интересное:
Tabularis создал один разработчик — Debba — как эксперимент по AI-assisted разработке.
Цель была простой: проверить, насколько далеко AI-агенты способны зайти при создании реального продукта.
В итоге получилось 55 релизов, 1192 коммита и SQL-клиент, который уже конкурирует с продуктами компаний, где над подобными инструментами работают десятки инженеров.
Что есть в Tabularis, а в DBeaver нет:
✅ Встроенный MCP-сервер — Claude, Cursor и Windsurf могут читать схему БД и выполнять запросы прямо из чата
✅ SQL Notebooks с графиками внутри ячеек и общими переменными между ними
✅ Визуальный EXPLAIN с AI-анализом плана выполнения
✅ Визуальный конструктор запросов с drag-and-drop JOIN'ами
✅ Автоматическая генерация ER-диаграмм
✅ Поддержка PostgreSQL, MySQL/MariaDB, SQLite и ClickHouse через плагины
✅ Редактор на базе Monaco с интеллектуальным автодополнением
✅ Без телеметрии, аккаунтов и подписок
Чего пока нет в Tabularis, но есть в DBeaver:
❌ SQL Server
❌ Oracle
Если работаешь с ними, DBeaver пока остаётся более очевидным выбором.
Во всех остальных случаях Tabularis запускается примерно за 2 секунды, занимает меньше ресурсов и позволяет AI-агентам работать с базой напрямую.
https://github.com/TabularisDB/tabularis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Каждая база данных Postgres имеет свой профиль нагрузки: одни в основном читают данные, другие — постоянно их записывают. Понимание этого помогает принимать решения по индексам, настройке
Чтение и запись — не одно и то же
Чтение получает страницу размером 8 КБ из
Если страница уже закэширована, стоимость операции почти нулевая.
Если её приходится читать с диска — это одно физическое чтение.
С записью всё сложнее:
• Изменение сначала записывается в WAL, и только после этого транзакция может быть подтверждена
• При первой записи после checkpoint'а может потребоваться запись всей страницы в WAL (
• Обновляются все связанные индексы
• Может выполняться запись в TOAST-таблицы и TOAST-индексы
• Страница данных должна находиться в памяти, поэтому запись часто включает дополнительное чтение
Из-за этого одна операция записи по стоимости ввода-вывода обычно заметно дороже одной операции чтения.
Настройки для read-heavy нагрузок
•
• Индексы на колонках из
• Read replicas — позволяют распределить нагрузку от
•
Настройки для write-heavy нагрузок
• Быстрые накопители (NVMe SSD, высокий IOPS) — записи нельзя обслуживать только за счёт кэша
• Меньше индексов — каждый индекс приходится обновлять при записи; неиспользуемые индексы лучше удалять
• HOT Updates и
• Настройка WAL —
• Более крупный
👉 @SQLPortal
shared_buffers, WAL, репликам чтения и агрессивности autovacuum.Чтение и запись — не одно и то же
Чтение получает страницу размером 8 КБ из
shared_buffers или кэша ОС.Если страница уже закэширована, стоимость операции почти нулевая.
Если её приходится читать с диска — это одно физическое чтение.
С записью всё сложнее:
• Изменение сначала записывается в WAL, и только после этого транзакция может быть подтверждена
• При первой записи после checkpoint'а может потребоваться запись всей страницы в WAL (
full page write)• Обновляются все связанные индексы
• Может выполняться запись в TOAST-таблицы и TOAST-индексы
• Страница данных должна находиться в памяти, поэтому запись часто включает дополнительное чтение
Из-за этого одна операция записи по стоимости ввода-вывода обычно заметно дороже одной операции чтения.
Настройки для read-heavy нагрузок
•
shared_buffers и effective_cache_size — чем больше горячих данных помещается в памяти, тем меньше обращений к диску• Индексы на колонках из
WHERE, JOIN и ORDER BY — выигрыш от ускорения чтения обычно перекрывает накладные расходы на обновление индексов• Read replicas — позволяют распределить нагрузку от
SELECT-запросов без воздействия на primary-узел•
EXPLAIN ANALYZE — помогает находить медленные запросы и заменять последовательное сканирование (Seq Scan) на индексное (Index Scan) там, где это оправданоНастройки для write-heavy нагрузок
• Быстрые накопители (NVMe SSD, высокий IOPS) — записи нельзя обслуживать только за счёт кэша
• Меньше индексов — каждый индекс приходится обновлять при записи; неиспользуемые индексы лучше удалять
• HOT Updates и
fillfactor — Postgres может обновлять строку без изменения индексов, если индексируемые поля не меняются и на странице есть свободное место• Настройка WAL —
wal_buffers уменьшает частоту сбросов WAL, а checkpoint_timeout и checkpoint_completion_target помогают сглаживать пики нагрузки во время checkpoint'ов• Более крупный
shared_buffers — грязные страницы должны находиться в памяти до их записи на диск, поэтому дополнительная память может улучшить производительность систем с интенсивной записью.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Общие табличные выражения (Common Table Expressions, CTE), известные по ключевому слову
CTE помогают упростить сложные SQL-запросы и сделать их более читаемыми.
Вместо вложенных подзапросов на несколько уровней можно разбить логику на отдельные именованные блоки и затем использовать их как обычные таблицы в основном запросе.
Преимущества:
→ улучшают читаемость сложных запросов
→ позволяют повторно использовать промежуточные результаты
→ упрощают отладку и поддержку SQL-кода
→ поддерживают рекурсивные запросы через
Baraa Khatib Salkini наглядно показывает, как работают CTE и почему они делают сложные SQL-запросы гораздо понятнее.
👉 @SQLPortal
WITH, позволяют создавать именованные подзапросы:WITH cte AS (
SELECT ...
)
SELECT *
FROM cte;
CTE помогают упростить сложные SQL-запросы и сделать их более читаемыми.
Вместо вложенных подзапросов на несколько уровней можно разбить логику на отдельные именованные блоки и затем использовать их как обычные таблицы в основном запросе.
Преимущества:
→ улучшают читаемость сложных запросов
→ позволяют повторно использовать промежуточные результаты
→ упрощают отладку и поддержку SQL-кода
→ поддерживают рекурсивные запросы через
WITH RECURSIVEBaraa Khatib Salkini наглядно показывает, как работают CTE и почему они делают сложные SQL-запросы гораздо понятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
SQL CTE (Common Table Expression) Visually Explained | Full Guide WITH Clause | #SQL Course 28
Visually explained how SQL CTEs work using the WITH clause to simplify complex queries and improve readability.
Want More? 👇
- *Free Download Materials* https://www.datawithbaraa.com/wiki/sql#sql-welcome
- *Free SQL Course* https://youtu.be/SSKVgrwhzus…
Want More? 👇
- *Free Download Materials* https://www.datawithbaraa.com/wiki/sql#sql-welcome
- *Free SQL Course* https://youtu.be/SSKVgrwhzus…
❤4
Кстати, если пропустили:
Вышла Oracle AI Database 23.26.2 Free.
Можно скачать и попробовать новые возможности SQL, включая:
вложенные
https://www.oracle.com/database/free/get-started/
👉 @SQLPortal
Вышла Oracle AI Database 23.26.2 Free.
Можно скачать и попробовать новые возможности SQL, включая:
JOIN TO ONEWAIT/NOWAIT для DML-операцийвложенные
WITH-выражения (Nested WITH)https://www.oracle.com/database/free/get-started/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Нашёл бесплатный сайт для изучения SQL в формате интерактивных упражнений.
https://www.aprendesql.dev/
👉 @SQLPortal
https://www.aprendesql.dev/
Please open Telegram to view this post
VIEW IN TELEGRAM
Aprende SQL
Aprende SQL | Curso gratuito desde cero con ejercicios prácticos
Curso gratuito e interactivo de SQL en español. Aprende a consultar, filtrar, unir tablas y manipular datos con un editor SQL integrado en cada lección.
👍6💊1
На выходных разбирался с WAL (Write-Ahead Log) в PostgreSQL.
На первый взгляд идея кажется простой: сначала записать изменения в журнал, а уже потом применять их к данным на диске. Но чем глубже копаешь, тем больше деталей всплывает.
За WAL стоят буферы, контрольные точки (checkpoints), фоновая запись (background writer), LSN у страниц, процессы восстановления после сбоев и ещё много механизмов, которые работают вместе.
Ниже — сильно упрощённая схема, но она помогла мне лучше понять общую картину и то, как PostgreSQL обеспечивает надёжность данных.
На первый взгляд идея кажется простой: сначала записать изменения в журнал, а уже потом применять их к данным на диске. Но чем глубже копаешь, тем больше деталей всплывает.
За WAL стоят буферы, контрольные точки (checkpoints), фоновая запись (background writer), LSN у страниц, процессы восстановления после сбоев и ещё много механизмов, которые работают вместе.
Ниже — сильно упрощённая схема, но она помогла мне лучше понять общую картину и то, как PostgreSQL обеспечивает надёжность данных.
В Oracle AI Database 26ai появилась возможность управлять тем, попадают ли ограничения базы данных в JSON Schema.
Для этого используются два режима
PRECHECK — включает ограничения БД в JSON Schema.
NOPRECHECK — исключает ограничения из JSON Schema.
Если использовать PRECHECK, ограничения вроде
При использовании NOPRECHECK ограничения не включаются в схему, а проверка и определение допустимых значений остаются на стороне базы данных.
Функция доступна в Oracle AI Database 26ai и помогает синхронизировать правила валидации между БД и приложением.
👉 @SQLPortal
Для этого используются два режима
PRECHECK — включает ограничения БД в JSON Schema.
NOPRECHECK — исключает ограничения из JSON Schema.
Если использовать PRECHECK, ограничения вроде
NOT NULL, CHECK, диапазонов значений и других правил будут перенесены в JSON Schema. Это позволяет приложениям выполнять валидацию ещё до отправки данных в базу.При использовании NOPRECHECK ограничения не включаются в схему, а проверка и определение допустимых значений остаются на стороне базы данных.
Функция доступна в Oracle AI Database 26ai и помогает синхронизировать правила валидации между БД и приложением.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Ближайший релиз PostgreSQL 19 получит поддержку графовых запросов.
С помощью SQL/PGQ можно будет работать со связями напрямую через SQL:
→ социальные сети
→ рекомендательные системы
→ выявление мошенничества
→ графы зависимостей
PostgreSQL больше не ограничивается ролью реляционной базы данных.
Он постепенно превращается в универсальную платформу для хранения и обработки данных любых типов.
👉 @SQLPortal
С помощью SQL/PGQ можно будет работать со связями напрямую через SQL:
→ социальные сети
→ рекомендательные системы
→ выявление мошенничества
→ графы зависимостей
PostgreSQL больше не ограничивается ролью реляционной базы данных.
Он постепенно превращается в универсальную платформу для хранения и обработки данных любых типов.
Please open Telegram to view this post
VIEW IN TELEGRAM
PostgreSQL 19 — это гораздо больше, чем просто развитие поддержки JSON.
Что появится в новой версии:
→ графовые запросы через SQL/PGQ
→ GROUP BY ALL
→ REPACK CONCURRENTLY
→ параллельный autovacuum
→ логическая репликация без перезапуска сервера
→ репликация sequence
→ более подробный ввод-вывод в EXPLAIN ANALYZE
→ новые представления pg_stat_lock и pg_stat_recovery
→ онлайн-проверка контрольных сумм (checksums)
PostgreSQL продолжает превращаться в систему, изначально ориентированную на эксплуатацию в production-среде. Всё больше задач по масштабированию, обслуживанию, мониторингу и репликации теперь решаются встроенными средствами базы данных.
👉 @SQLPortal
Что появится в новой версии:
→ графовые запросы через SQL/PGQ
→ GROUP BY ALL
→ REPACK CONCURRENTLY
→ параллельный autovacuum
→ логическая репликация без перезапуска сервера
→ репликация sequence
→ более подробный ввод-вывод в EXPLAIN ANALYZE
→ новые представления pg_stat_lock и pg_stat_recovery
→ онлайн-проверка контрольных сумм (checksums)
PostgreSQL продолжает превращаться в систему, изначально ориентированную на эксплуатацию в production-среде. Всё больше задач по масштабированию, обслуживанию, мониторингу и репликации теперь решаются встроенными средствами базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Инженерия данных становится намного проще, когда вы перестаёте изучать случайные инструменты и начинаете двигаться по понятному пути.
Любой пайплайн начинается с основ: как перемещаются данные, где они хранятся и как различные системы взаимодействуют друг с другом.
Дальше идёт фундамент:
• SQL для работы с данными и запросов
• Python для автоматизации задач
• Базы данных для хранения информации
• Хранилища данных (Data Warehouses) для аналитики
• Облачные платформы для масштабирования систем
Когда эти основы становятся понятны, можно переходить следующему этапу. Вы учитесь очищать и обрабатывать «грязные» данные, проектировать надёжные модели, работать со Spark, разбираться в форматах файлов, строить сквозные пайплайны и использовать инструменты оркестрации, такие как Airflow, Dagster или Prefect.
Именно здесь теория начинает превращаться в практические навыки, востребованные на рынке. Настоящий рост начинается тогда, когда вы создаёте собственные проекты, документируете процесс обучения, делаете шаблоны, публикуете заметки и делитесь своими знаниями с другими.
Потому что Data Engineering — это не только знание инструментов. Это понимание полного жизненного цикла данных:
Источник → Сбор → Хранение → Преобразование → Предоставление
Эта схема объединяет весь путь в одном месте: от фундаментальных знаний до проектов, полезных ресурсов, каналов для обучения и шагов по созданию собственного портфолио.
Важное напоминание для всех новичков:
• Начинайте с малого.
• Развивайтесь последовательно.
• Осваивайте по одному уровню за раз.
• Делитесь тем, что создаёте.
Именно так инженерия данных начинает складываться в единую понятную картину.
👉 @SQLPortal
Любой пайплайн начинается с основ: как перемещаются данные, где они хранятся и как различные системы взаимодействуют друг с другом.
Дальше идёт фундамент:
• SQL для работы с данными и запросов
• Python для автоматизации задач
• Базы данных для хранения информации
• Хранилища данных (Data Warehouses) для аналитики
• Облачные платформы для масштабирования систем
Когда эти основы становятся понятны, можно переходить следующему этапу. Вы учитесь очищать и обрабатывать «грязные» данные, проектировать надёжные модели, работать со Spark, разбираться в форматах файлов, строить сквозные пайплайны и использовать инструменты оркестрации, такие как Airflow, Dagster или Prefect.
Именно здесь теория начинает превращаться в практические навыки, востребованные на рынке. Настоящий рост начинается тогда, когда вы создаёте собственные проекты, документируете процесс обучения, делаете шаблоны, публикуете заметки и делитесь своими знаниями с другими.
Потому что Data Engineering — это не только знание инструментов. Это понимание полного жизненного цикла данных:
Источник → Сбор → Хранение → Преобразование → Предоставление
Эта схема объединяет весь путь в одном месте: от фундаментальных знаний до проектов, полезных ресурсов, каналов для обучения и шагов по созданию собственного портфолио.
Важное напоминание для всех новичков:
• Начинайте с малого.
• Развивайтесь последовательно.
• Осваивайте по одному уровню за раз.
• Делитесь тем, что создаёте.
Именно так инженерия данных начинает складываться в единую понятную картину.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
SQL JOINs: мини-шпаргалка
Простая и наглядная памятка по основным JOIN-операциям в SQL: схемы, запросы и краткие пояснения
Сохраняем за лайк❤️
👉 @SQLPortal
Простая и наглядная памятка по основным JOIN-операциям в SQL: схемы, запросы и краткие пояснения
Сохраняем за лайк
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Что нового в PostgreSQL 19?
PostgreSQL 19 продолжает одну важную тенденцию. Postgres превращается во что-то гораздо большее, чем просто реляционная база.
Самые интересные новинки:
Графовые запросы через SQL/PGQ
PostgreSQL 19 научился выполнять SQL Property Graph Queries. Теперь можно запрашивать связи прямо на SQL, без отдельной графовой базы. Пригодится для соцсетей, рекомендаций, поиска мошенничества и графов зависимостей.
GROUP BY ALL
Вместо того чтобы перечислять все колонки в GROUP BY, пишешь GROUP BY ALL. Postgres сам группирует по неагрегатным колонкам. Меньше шаблонного кода, меньше ошибок.
WAIT FOR LSN
Фича для приложений, которые используют реплики чтения. Позволяет подождать, пока реплика догонит основную базу, прежде чем читать данные. Полезно для консистентности «прочитал то, что написал».
Лучшая поддержка JSON
Postgres и дальше улучшает работу с полуструктурированными данными, не теряя при этом SQL, индексы, соединения и транзакции.
PostgreSQL 19 пока в бете. Детали могут поменяться к релизу. Но направление понятно. Postgres потихоньку становится одной платформой под всё: реляционные данные, документы, графы, аналитика и векторы для AI.
👉 @SQLPortal
PostgreSQL 19 продолжает одну важную тенденцию. Postgres превращается во что-то гораздо большее, чем просто реляционная база.
Самые интересные новинки:
Графовые запросы через SQL/PGQ
PostgreSQL 19 научился выполнять SQL Property Graph Queries. Теперь можно запрашивать связи прямо на SQL, без отдельной графовой базы. Пригодится для соцсетей, рекомендаций, поиска мошенничества и графов зависимостей.
GROUP BY ALL
Вместо того чтобы перечислять все колонки в GROUP BY, пишешь GROUP BY ALL. Postgres сам группирует по неагрегатным колонкам. Меньше шаблонного кода, меньше ошибок.
WAIT FOR LSN
Фича для приложений, которые используют реплики чтения. Позволяет подождать, пока реплика догонит основную базу, прежде чем читать данные. Полезно для консистентности «прочитал то, что написал».
Лучшая поддержка JSON
Postgres и дальше улучшает работу с полуструктурированными данными, не теряя при этом SQL, индексы, соединения и транзакции.
PostgreSQL 19 пока в бете. Детали могут поменяться к релизу. Но направление понятно. Postgres потихоньку становится одной платформой под всё: реляционные данные, документы, графы, аналитика и векторы для AI.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Хочешь быстро прокачать SQL?
Вот 4 курса, которые помогут поднять уровень:
1️⃣ SQL Basics for Data Science
[https://programmingvalley.com/course/learn-sql-basics-for-data-science-free-course]
2️⃣ Google Data Analytics
[https://programmingvalley.com/course/google-data-analytics-free-course]
3️⃣ IBM Data Science
[https://programmingvalley.com/course/ibm-data-science-free-course]
4️⃣ Google Business Intelligence
[https://programmingvalley.com/course/google-business-intelligence-free-course]
Подойдут как для изучения основ SQL, так и для освоения анализа данных, BI-инструментов и работы с данными в реальных проектах.
👉 @SQLPortal
Вот 4 курса, которые помогут поднять уровень:
1️⃣ SQL Basics for Data Science
[https://programmingvalley.com/course/learn-sql-basics-for-data-science-free-course]
2️⃣ Google Data Analytics
[https://programmingvalley.com/course/google-data-analytics-free-course]
3️⃣ IBM Data Science
[https://programmingvalley.com/course/ibm-data-science-free-course]
4️⃣ Google Business Intelligence
[https://programmingvalley.com/course/google-business-intelligence-free-course]
Подойдут как для изучения основ SQL, так и для освоения анализа данных, BI-инструментов и работы с данными в реальных проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Programming Valley
Learn SQL Basics for Data Science | Programming Valley
Course Overview This hands-on SQL specialization helps you build the foundational skills needed to analyze, transform, and manage data using SQL — the most in-demand language for data professionals.You’ll start from zero and progress through practical exercises…
Подарок для новичков: бесплатный интерактивный курс «Aprende SQL»
Если хотите освоить SQL или подтянуть базу, забирайте полезную находку. На сайте собраны интерактивные уроки и практические задания, есть встроенная песочница, где можно сразу выполнять запросы и закреплять знания.
Ставь лайк и погнали учиться❤️
☝️ Ссылка источник
@SQLPortal
Если хотите освоить SQL или подтянуть базу, забирайте полезную находку. На сайте собраны интерактивные уроки и практические задания, есть встроенная песочница, где можно сразу выполнять запросы и закреплять знания.
Ставь лайк и погнали учиться
@SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
ДЕНЬ 1 из серии «20 дней SQL для начинающих».
Каждый аналитик данных начинает свой путь с SQL. Прежде чем переходить к дашбордам, машинному обучению или бизнес-аналитике, важно понять, как хранятся данные и как к ним обращаться с помощью запросов.
Начните с этих 6 базовых концепций и заложите прочный фундамент для дальнейшего изучения SQL.
Сохраните эту дорожную карту, чтобы вернуться к ней позже.
👉 @SQLPortal
Каждый аналитик данных начинает свой путь с SQL. Прежде чем переходить к дашбордам, машинному обучению или бизнес-аналитике, важно понять, как хранятся данные и как к ним обращаться с помощью запросов.
Начните с этих 6 базовых концепций и заложите прочный фундамент для дальнейшего изучения SQL.
Сохраните эту дорожную карту, чтобы вернуться к ней позже.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
This media is not supported in your browser
VIEW IN TELEGRAM
Открытый инструмент для работы с SQL-базами данных!
Визуализируйте, редактируйте и проектируйте базы данных с помощью удобного визуального интерфейса:
✓ Интерактивные диаграммы ваших таблиц
✓ Экспорт схемы базы данных в изображение PNG
✓ Поддержка MySQL, PostgreSQL, SQLite и других СУБД
http://app.chartdb.io
👉 @SQLPortal
Визуализируйте, редактируйте и проектируйте базы данных с помощью удобного визуального интерфейса:
✓ Интерактивные диаграммы ваших таблиц
✓ Экспорт схемы базы данных в изображение PNG
✓ Поддержка MySQL, PostgreSQL, SQLite и других СУБД
http://app.chartdb.io
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2