sqlportal | Unsorted

Telegram-канал sqlportal - SQL Portal | Базы Данных

14500

Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных Связь: @devmangx РКН: https://clck.ru/3H4Wo3

Subscribe to a channel

SQL Portal | Базы Данных

Сравнительное руководство по работе с данными

Знаешь SQL и хочешь понять, как делать то же самое в Pandas? Это руководство покажет как привычные SQL-запросы выглядят в мире Python.

👉 @SQLPortal

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

SQL Portal | Базы Данных

Сначала не понял, потом как понял 😲

👉 @SQLPortal

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

SQL Portal | Базы Данных

Мощная подборка из 30 статей по системному дизайну

Коротко, по делу, с примерами и кодом. Сокровищница если хочешь прокачать базу или освежить знания.

Забираем в закладки:

1. Что такое API
2. Что такое вебхуки
3. REST vs GraphQL
4. Что такое API Gateway
5. Балансировщики нагрузки
6. Алгоритмы балансировки нагрузки
7. Прокси vs Обратный прокси
8. Что такое масштабируемость
9. Что такое доступность
10. Как избежать единой точки отказа (SPOF)
11. Объяснение теоремы CAP
12. 15 типов баз данных и когда их использовать
13. 7 ключевых различий между SQL и NoSQL
14. Что такое ACID-транзакции
15. Подробное руководство по индексам в базах данных
16. Шардинг vs Партиционирование
17. Объяснение последовательного хеширования
18. CDC (Change Data Capture)
19. Кэширование
20. Топ-5 стратегий кэширования
21. 7 стратегий вытеснения кэша
22. CDN
23. Алгоритмы ограничения скорости
24. Очереди сообщений
25. Фильтры Блума
26. Идемпотентность в распределённых системах
27. Конкурентность vs Параллелизм
28. Stateful vs Stateless
29. Long Polling vs WebSockets
30. Пакетная (batch) vs потоковая (stream) обработка данных


👉 @SQLPortal

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

SQL Portal | Базы Данных

5000+ бесплатных проектов

Python, JavaScript, Go, Rust, Java, C/C++ и другим технологиям для обучения через практику. 270+ тыс. звёзд на GitHub и регулярные обновления.

👉 @SQLPortal

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

SQL Portal | Базы Данных

Нашли мощную open-source платформу для работы с SQL через ИИ — WrenAI

WrenAI это Generative BI-платформа, которая позволяет задавать вопросы к данным обычным языком. Сервис автоматически генерирует SQL-запросы, строит визуализации и учитывает бизнес-контекст, а не просто угадывает структуру таблиц.

Что умеет:

• Поддерживает более 20 источников данных, включая PostgreSQL, MySQL, ClickHouse, Snowflake, BigQuery и другие.
• Генерирует SQL-запросы по описанию на естественном языке и помогает анализировать данные без ручного написания сложных запросов.
• Использует семантический слой (Semantic Layer), благодаря которому ИИ понимает связи между таблицами и бизнес-логику, значительно снижая вероятность ошибок при генерации SQL.
• Автоматически строит графики, дашборды и отчёты по результатам запросов.
• Поддерживает интеграцию с Claude Code, Cursor и другими AI-агентами.
• Полностью open-source (Apache 2.0) и может быть развёрнут в собственной инфраструктуре.

Если следите за развитием AI + SQL, Text-to-SQL и Generative BI, этот проект определённо стоит добавить в закладки.

https://github.com/Canner/WrenAI

👉 @SQLPortal

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

SQL Portal | Базы Данных

Шпаргалка по SQL JOIN

Если постоянно путаетесь в JOIN, сохраните эту схему — на ней собраны самые популярные варианты объединения таблиц.


LEFT JOIN: Возвращает все строки из левой таблицы (T1) и совпадающие строки из правой (T2). Если совпадений нет — значения из T2 будут NULL.

SELECT *
FROM T1
LEFT JOIN T2
ON T1.NAME = T2.NAME;


INNER JOIN
: Возвращает только совпадающие записи, присутствующие в обеих таблицах.

SELECT *
FROM T1
INNER JOIN T2
ON T1.NAME = T2.NAME;


RIGHT JOIN
: Возвращает все строки из правой таблицы (T2) и совпадающие строки из левой (T1). Если совпадений нет — значения из T1 будут NULL.
SELECT *
FROM T1
RIGHT JOIN T2
ON T1.NAME = T2.NAME;


LEFT JOIN (EXCLUDE T2)
: Возвращает записи, которые есть только в левой таблице.
SELECT *
FROM T1
LEFT JOIN T2
ON T1.NAME = T2.NAME
WHERE T2.ID IS NULL;


UNION ALL (EXCLUDE INNER)
: Возвращает записи, которые присутствуют только в одной из таблиц, исключая пересечение.
SELECT *
FROM T1
LEFT JOIN T2
ON T1.NAME = T2.NAME
WHERE T2.ID IS NULL

UNION ALL

SELECT *
FROM T1
RIGHT JOIN T2
ON T1.NAME = T2.NAME
WHERE T1.ID IS NULL;


RIGHT JOIN (EXCLUDE T1)
: Возвращает записи, которые есть только в правой таблице.
SELECT *
FROM T1
RIGHT JOIN T2
ON T1.NAME = T2.NAME
WHERE T1.ID IS NULL;


FULL OUTER JOIN
: Возвращает все записи из обеих таблиц: совпадающие и несовпадающие.
SELECT *
FROM T1
FULL OUTER JOIN T2
ON T1.NAME = T2.NAME;


UNION ALL
: Альтернатива FULL OUTER JOIN для СУБД, где он не поддерживается (например, MySQL).
SELECT *
FROM T1
LEFT JOIN T2
ON T1.NAME = T2.NAME

UNION ALL

SELECT *
FROM T1
RIGHT JOIN T2
ON T1.NAME = T2.NAME
WHERE T1.ID IS NULL;


👉 @SQLPortal

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

SQL Portal | Базы Данных

История SQLite началась в 2000 году, когда разработчик Д. Ричард Хипп создавал ПО для эсминца ВМС США.

Военным нужна была база данных, способная работать где угодно:

• без сервера
• без интернета
• без администратора
• без настройки

Так появился SQLite.

В отличие от MySQL, PostgreSQL и Oracle, SQLite не запускает отдельный серверный процесс. Вся база данных хранится в одном файле, а приложение работает с ним напрямую.

Никакой установки, конфигурации или сетевых подключений.

Сегодня SQLite используется в миллиардах устройств и приложений:

→ iPhone
→ Android
→ Google Chrome
→ продукты Adobe
→ встраиваемые и авиационные системы

С высокой вероятностью вы уже использовали SQLite сегодня:

- Instagram
- Spotify
- WhatsApp

Самое удивительное — проект по-прежнему поддерживает его создатель, Ричард Хипп.

Без венчурных инвестиций, IPO и продажи компании.

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

👉 @SQLPortal

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

SQL Portal | Базы Данных

SQL — это не сложно

Для старта достаточно освоить всего 5 основных запросов. Вот в каком порядке я рекомендую изучать SQL новичкам:

• SELECT + FROM + WHERE — выборка и фильтрация данных.
• ORDER BY + LIMIT — сортировка результатов и ограничение количества строк.
• GROUP BY + COUNT() / SUM() — группировка данных и вычисление агрегатов.
• JOIN — объединение данных из нескольких таблиц (именно этот этап вызывает больше всего вопросов).
• CASE WHEN — добавление условной логики прямо в SQL-запросы.

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

👉 @SQLPortal

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

SQL Portal | Базы Данных

Нашли интересный способ упростить работу с JOIN в PostgreSQL

Автор предлагает автоматически генерировать функции на основе foreign key, чтобы выполнять соединения без ручного написания JOIN ... ON. Такой подход делает SQL-запросы короче, снижает вероятность ошибок и приближает работу с базой данных к навигации по связям, как в ORM.

Что разбирается в статье:

• Почему классический синтаксис JOIN заставляет каждый раз повторять уже известные базе связи и какие проблемы это создаёт.
• История попыток добавить в SQL соединения по внешним ключам (KEY JOIN) и почему эта идея до сих пор не стала частью стандарта.
• Проект pg_relation_sql, который автоматически создаёт функции навигации по внешним ключам и позволяет писать запросы в стиле client(document) вместо длинных JOIN ... ON.
• Сравнение производительности с обычными JOIN, ограничения подхода и примеры использования в реальных запросах.

Материал будет особенно интересен разработчикам и DBA, которые хотят глубже разобраться в возможностях PostgreSQL и взглянуть на альтернативный подход к работе со связями между таблицами.

https://habr.com/ru/articles/1065684/

👉 @SQLPortal

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

SQL Portal | Базы Данных

Нашли подробный разбор самых распространённых ошибок при эксплуатации PostgreSQL

Автор на основе реальных аудитов СУБД собрал 10 проблем, которые чаще всего встречаются в production-системах, и объяснил, как их обнаружить и исправить.

Что разбирается в статье:

• Резервное копирование PostgreSQL: почему наличие бэкапов ещё не гарантирует возможность восстановления данных.
• Типичные ошибки безопасности: использование суперпользователя приложением, слишком широкие правила доступа в pg_hba.conf и отсутствие TLS.
• Настройка логирования, контрольных сумм, мониторинга, поиск долгих транзакций, борьба с bloat и правильная работа autovacuum.
• Оптимизация конфигурации PostgreSQL под реальную нагрузку, архитектурные ошибки, а также проверка соответствия требованиям RTO/RPO и отказоустойчивости.

Материал будет полезен DBA, DevOps, системным администраторам и всем, кто отвечает за эксплуатацию PostgreSQL в production. В статье не только разбираются причины возникновения проблем, но и приводятся практические рекомендации, SQL-запросы и примеры их решения.

https://habr.com/ru/companies/k2tech/articles/1064474/

👉 @SQLPortal

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

SQL Portal | Базы Данных

Apache Cassandra — одна из самых популярных распределённых NoSQL-баз данных, разработанная для хранения огромных объёмов информации с высокой отказоустойчивостью и линейной масштабируемостью.

Проект входит в экосистему Apache Software Foundation и используется в системах, где критически важны доступность и производительность.

Что умеет:

• Линейно масштабируется — новые узлы можно добавлять в кластер без остановки сервиса, увеличивая производительность практически пропорционально количеству серверов.
• Использует masterless-архитектуру — все узлы равноправны, поэтому отсутствует единая точка отказа. Поддерживается репликация между дата-центрами и регионами.
• Работает через CQL (Cassandra Query Language) — язык запросов, синтаксис которого во многом напоминает SQL, что упрощает освоение для разработчиков.
• Поддерживает высокую скорость записи, автоматическое распределение данных, резервное копирование, индексацию, пользовательские типы данных, агрегатные функции и lightweight-транзакции.

Apache Cassandra особенно хорошо подходит для высоконагруженных систем: IoT, банковских сервисов, телеком-платформ, систем мониторинга, рекомендательных сервисов и других приложений, где требуется обрабатывать большие объёмы данных без простоев.

https://github.com/apache/cassandra

👉 @SQLPortal

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

SQL Portal | Базы Данных

Нашли лёгкую альтернативу phpMyAdmin для работы с SQL-базами

Adminer — это веб-клиент, состоящий всего из одного PHP-файла.

Что умеет:

• Поддерживает PostgreSQL, MySQL, MariaDB, SQLite, Oracle, MS SQL и другие СУБД.
• Позволяет выполнять SQL-запросы, управлять таблицами, индексами, пользователями, а также импортировать и экспортировать данные.
• Поддерживает плагины, расширяющие возможности и добавляющие поддержку других источников данных.

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

https://github.com/vrana/adminer

👉 @SQLPortal

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

SQL Portal | Базы Данных

Оптимизируйте работу с SQL

Улучшаем процесс разработки, добавив две мощные возможности: оператор Flow (->>) и UNION BY NAME.

Оператор Flow позволяет объединять SQL-запросы в цепочки по аналогии с Unix-конвейерами, где результат одного шага автоматически становится входными данными для следующего. Это делает код чище, избавляет от необходимости использовать временные таблицы или RESULT_SCAN() и позволяет строить более гибкие аналитические пайплайны.

UNION BY NAME выводит объединение данных на новый уровень. Вместо сопоставления столбцов по их порядку он автоматически объединяет их по именам. Это значительно упрощает работу с изменяющимися схемами данных, а отсутствующие столбцы автоматически заполняются значением NULL. Больше не нужно вручную переименовывать столбцы перед объединением.

Используя эти возможности вместе, вы сможете создавать более надежные, понятные и удобные в сопровождении SQL-пайплайны.

Подробности и примеры использования по ссылке.

👉 @SQLPortal

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

SQL Portal | Базы Данных

Нашли отличный материал о том, какие проблемы может создавать MVCC (Multi-Version Concurrency Control) в PostgreSQL и почему этот механизм не так прост, как кажется.

В статье разбирается, как MVCC позволяет чтению и записи выполняться без взаимных блокировок, но одновременно приводит к появлению «мёртвых» версий строк (dead tuples), росту размера таблиц, дополнительной нагрузке на VACUUM и другим скрытым издержкам. Автор объясняет, почему каждое UPDATE фактически создаёт новую версию строки и как это влияет на производительность базы данных.

Отличный материал для тех, кто хочет глубже понять внутреннее устройство PostgreSQL, разобраться в работе MVCC, механизмах видимости строк, VACUUM, HOT Updates и причинах деградации производительности при больших объёмах обновлений.

https://boringsql.com/posts/mvcc-bad-bad/

👉 @SQLPortal

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

SQL Portal | Базы Данных

Большой шаг вперёд для PostgreSQL

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

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

Из-за этого многие команды были вынуждены:

• Поднимать отдельный кластер Elasticsearch только ради поиска.
• Поддерживать пайплайны синхронизации данных между системами.
• Платить за управляемые поисковые сервисы.
• Мириться с не самым качественным ранжированием результатов.

Теперь появилась альтернатива — pg_textsearch, новое open-source расширение для PostgreSQL от TigerData.

Что оно предлагает:

• Поддержку алгоритма BM25 — того самого, который используется в Elasticsearch, Lucene и большинстве современных поисковых систем.
• Простой SQL-синтаксис для поиска:

ORDER BY content <@> 'search terms'

• Совместимость с конфигурациями полнотекстового поиска PostgreSQL для разных языков.
• Возможность объединить поиск по ключевым словам и векторный поиск через pgvector, что особенно полезно для RAG-приложений.

Расширение распространяется с открытым исходным кодом по лицензии PostgreSQL и позволяет реализовать современный поиск прямо внутри Postgres, без необходимости использовать отдельную поисковую инфраструктуру.

https://github.com/timescale/pg_textsearch

👉 @SQLPortal

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

SQL Portal | Базы Данных

Отличный ресурс по паттернам проектирования с примерами на популярных языках

Собраны все основные паттерны проектирования с примерами кода, схемами и краткими объяснениями. Удобно для повторения, обучения или собеседований 👍

👉 @SQLPortal

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

SQL Portal | Базы Данных

Грокаем алгоритмы в «alg0dev»

Нашёл сервис который превращает сложные алгоритмы в наглядное шоу: сортировки, графы и поиск оживают прямо на экране

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

👉 @SQLPortal

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

SQL Portal | Базы Данных

Вопрос по SQL: COALESCE и NULLIF

Что вернёт этот запрос?

👉 @SQLPortal

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

SQL Portal | Базы Данных

Шпаргалка по проектированию веб систем System Design 101

Подробное руководство по архитектуре веб‑сервисов, которое обязательно стоит сохранить. Это перевод статьи от ByteByteGo опубликованный на Хабре

Сохраняем за лайк ❤️

👉 @SQLPortal

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

SQL Portal | Базы Данных

Бесплатные курсы по ИИ Data Science и облачным технологиям

Платформа от IBM предлагает более 100 бесплатных курсов и проектов по искусственному интеллекту, анализу данных, облачным вычислениям и другим современным технологиям 👦

👉 @SQLPortal

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

SQL Portal | Базы Данных

Вопрос по SQL:

Что вернёт этот запрос?

👉 @SQLPortal

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

SQL Portal | Базы Данных

Бесплатные IT книг

На GoalKicker собраны десятки PDF-книг по SQL, PostgreSQL, MySQL, SQL Server, Oracle, SQLite и другим СУБД.

Все книги доступны бесплатно, содержат множество примеров кода и основаны на лучших материалах сообщества Stack Overflow.

👉 @SQLPortal

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

SQL Portal | Базы Данных

Совет по PostgreSQL: FILTER для нескольких агрегатов за один проход

Вместо нескольких CASE WHEN внутри агрегатных функций используйте FILTER:

SELECT
COUNT(*) AS total_orders,
COUNT(*) FILTER (WHERE status = 'completed') AS completed,
COUNT(*) FILTER (WHERE status = 'cancelled') AS cancelled
FROM orders;


Результат:
 total_orders | completed | cancelled
--------------+-----------+-----------
1523 | 1402 | 121


FILTER
позволяет применять собственное условие к каждой агрегатной функции. Так запрос становится компактнее, легче читается и избавляет от множества CASE WHEN.

👉 @SQLPortal

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

SQL Portal | Базы Данных

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

sqlit — это быстрый TUI-клиент с поддержкой большого количества СУБД, автоматическим обнаружением Docker-контейнеров, историей запросов и умным автодополнением команд. И всё это — без тяжёлых и требовательных к памяти приложений.

Если вы часто работаете с SQL из терминала, sqlit определённо стоит попробовать.

https://github.com/Maxteabag/sqlit

👉 @SQLPortal

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

SQL Portal | Базы Данных

SQL или NoSQL — редко бывают главной проблемой.

Гораздо чаще настоящая причина низкой производительности — это:

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

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

👉 @SQLPortal

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

SQL Portal | Базы Данных

Универсальный open source-клиент для работы с базами данных

Нашли удобный инструмент для работы с SQL и NoSQL базами данных.

WhoDB — это open source-клиент с современным веб-интерфейсом, который поддерживает PostgreSQL, MySQL, SQLite, MariaDB, ClickHouse, MongoDB, Redis, Elasticsearch и многие другие СУБД.

Что умеет:

• Подключаться к популярным SQL и NoSQL базам данных
• Выполнять SQL-запросы с подсветкой синтаксиса и автодополнением
• Просматривать и редактировать данные в удобной табличной форме
• Визуализировать структуру базы и связи между таблицами (ERD)
• Импортировать и экспортировать данные
• Работать с ИИ: задавать вопросы к данным на естественном языке через OpenAI, Anthropic, Ollama, Gemini и другие совместимые модели
• Запускаться через Docker, как десктопное приложение, CLI или MCP-сервер для интеграции с ИИ-ассистентами

https://github.com/clidey/whodb

👉 @SQLPortal

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

SQL Portal | Базы Данных

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

Spice — это open-source рантайм на языке Rust для разработчиков, которым нужны SQL-запросы, поиск и LLM-инференс рядом с существующими источниками данных.

Он помогает создавать приложения и ИИ-агентов, работающих с реальными данными, объединяя различные источники и предоставляя SQL, гибридный поиск и OpenAI-совместимые API из единого переносимого рантайма.

Основные возможности:

• Нативный CDC (Change Data Capture) — реплицирует изменения из PostgreSQL, MySQL и MongoDB, создавая готовые для аналитики реплики.
• Федеративные запросы — подключается более чем к 30 источникам данных и поддерживает query push-down для выполнения части запроса непосредственно в источнике данных.
• Гибридный поиск — объединяет векторный и полнотекстовый поиск с поддержкой RRF (Reciprocal Rank Fusion) и SQL-функций для повторного ранжирования результатов.
• Интерфейсы для ИИ — включает OpenAI-совместимые API, MCP-сервер и шлюз, а также поддержку Text-to-SQL.
• Гибкое развёртывание — может работать как один исполняемый файл, контейнер, sidecar или распределённый кластер.

https://github.com/spiceai/spiceai

Проект полностью open-source и распространяется по лицензии Apache 2.0.

👉 @SQLPortal

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

SQL Portal | Базы Данных

Полезный совет для PostgreSQL

Знаете ли вы, что автоматизировать задачи в PostgreSQL можно с помощью расширения pg_cron?

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

С помощью pg_cron можно автоматизировать, например:

• запуск VACUUM;
• обновление материализованных представлений (Materialized Views);
• выполнение регулярных SQL-запросов;
• другие задачи обслуживания базы данных.

Чтобы посмотреть список всех запланированных заданий, выполните:

SELECT * FROM cron.job;


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

👉 @SQLPortal

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

SQL Portal | Базы Данных

Нашли удобный инструмент для миграций баз данных на Go — goose.

Что умеет:

• Управлять миграциями схемы базы данных через SQL-файлы или Go-функции.
• Работать с PostgreSQL, MySQL, MariaDB, SQLite, ClickHouse, SQL Server и другими популярными СУБД.
• Поддерживает откат миграций, применение до нужной версии, проверку статуса, сидирование данных и миграции, встроенные прямо в Go-приложение.

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

https://github.com/pressly/goose

👉 @SQLPortal

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

SQL Portal | Базы Данных

Разобрали, почему PostgreSQL рекомендуют запускать с режимом Strict Memory Overcommit в Linux.

В статье объясняется:

Что такое memory overcommit и почему стандартное поведение Linux может быть опасно для PostgreSQL.

Как OOM Killer способен завершить процесс Postgres при нехватке памяти, оставив сервер без возможности принимать новые подключения.

Почему режим Strict Memory Overcommit помогает избежать подобных ситуаций, заставляя систему заранее отклонять выделение памяти вместо аварийного завершения процессов.

Какие параметры ядра (vm.overcommit_memory, vm.overcommit_ratio) влияют на работу PostgreSQL и как подобрать их для стабильной работы сервера.

Полезный материал для DBA, DevOps и всех, кто администрирует PostgreSQL в Linux и хочет лучше понимать причины OOM-ошибок и настройки памяти.

https://clickhouse.com/blog/strict-memory-overcommit-for-postgres

👉 @SQLPortal

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