SQL Portal | Базы Данных
14.1K subscribers
564 photos
72 videos
41 files
472 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Power BI смотрит на тебя, когда ты начинаешь путь дата-аналитика с ноутбуком на 4ГБ ОЗУ и Intel Celeron:

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33
This media is not supported in your browser
VIEW IN TELEGRAM
Распространённый вопрос на собеседовании по SQL: Как оптимизировать медленный SQL-запрос?

Варианты ответов:

• Избегать использования SELECT DISTINCT
• Использовать INNER JOIN вместо фильтрации через WHERE
• По возможности избегать JOIN вообще (рассмотреть денормализацию)
• Добавить индексы в базу данных
• Проанализировать план выполнения запроса (EXPLAIN / QUERY PLAN)

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥113
7 сайтов для практики логики программирования — бесплатно, интерактивно и интересно:

adventjs.dev — задачи на JavaScript с новогодней атмосферой
exercism.org — практика с менторством и большим выбором языков
leetcode.com — топовая платформа для подготовки к интервью
codewars.com — "ката"-задачи и система рангов
coderbyte.com — челленджи и оценки навыков
codesignal.com — тренировки и эмуляция интервью
hackerrank.com — задачи по алгоритмам, SQL, DevOps и др.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
SQL-вопрос

Что из перечисленного обязательно присутствует в каждой оконной функции SQL

a. DENSE_RANK
b. PARTITION
c. OVER
d. RANK
e. Всё вышеперечисленное

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2
Совет по продуктивной работе с Postgres: шаблонные базы данных

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

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

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

● Упрощает работу с расширениями, конфигурацией Postgres, управлением версиями и установкой зависимостей — всё, что обычно замедляет локальную разработку
● Обеспечивает соответствие схемы продакшену, так как шаблон можно быстро создать из полной копии базы без данных
● Сокращает время на развёртывание и удаление дев-машин
● Позволяет использовать анонимизированные тестовые данные, подходящие для разработки

Подробнее о шаблонных базах данных


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

pg_dump -U my_user -h my_host -p 5432 -d my_database --exclude-table-data --no-owner --no-privileges > template.sql


Флаг --exclude-table-data исключает данные, но сохраняет полную схему и все расширения.

➡️ Создайте базу и восстановите в неё шаблон:

-- создаём базу
CREATE DATABASE my_template_db OWNER postgres;


-- восстанавливаем из дампа
psql -U my_user -h my_host -p 5432 -d my_template_db -f template.sql


Добавьте сид-данные на этом этапе. Это позволит быстро клонировать шаблон без необходимости повторного восстановления.

➡️ Разрешите использовать базу как шаблон:

ALTER DATABASE my_template_db IS_TEMPLATE TRUE;


Важно: использовать шаблонные базы можно только от имени суперпользователя Postgres. На платформе Crunchy Bridge это поддерживается, но не все облачные провайдеры предоставляют доступ к суперюзеру.

➡️ Создайте новую базу на основе шаблона:

CREATE DATABASE new_db WITH TEMPLATE my_template_db OWNER my_user;


Это создаст копию my_template_db под именем new_db

➡️ Обновите строку подключения, чтобы использовать новую базу в разработке — и можно начинать писать код.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6
pgCompare — это утилита на Java, предназначенная для сравнения данных. Подходит для следующих сценариев:

🔸репликация — проверка того, что данные реплицируются корректно и находятся в синхронизации;

🔸кроссплатформенная репликация — валидация данных между разными СУБД;

🔸миграции между базами данных — убедиться, что данные корректно синхронизированы в рамках миграционного проекта;

🔸проверка целостности данных при active-active репликации.

На данный момент pgCompare поддерживает следующие СУБД: Oracle, PostgreSQL, DB2, MariaDB, MySQL и MSSQL.

https://github.com/CrunchyData/pgCompare

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Столбцы с типами JSON и JSONB удобны, когда нужно хранить произвольные данные без строгой схемы. Но иногда хочется добавить хоть какую-то валидацию структуры.

Для этого можно использовать расширение pg_jsonschema — оно позволяет задавать JSON-схему и тем самым контролировать структуру данных в таких столбцах.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3
Уже пробовал https://sql-workbench.com?

Запускай SQL-запросы к удалённым и локальным данным — таким как CSV, JSON и Parquet и визуализируй результат прямо в браузере, через duckdb в WebAssembly (WASM).

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Комментарии к столбцам в Postgres — это удобный способ документировать назначение столбца прямо внутри базы данных. Часто именно здесь уместно указывать уровень чувствительности данных.

Добавить комментарий к столбцу можно простой SQL-командой:

COMMENT ON COLUMN customers.ssn IS 'This is Sensitive PII';

Комментарии хранятся как часть внутренней схемы таблицы. Самый простой способ их посмотреть — использовать команду:

\d+ customers


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
Проверь свои знания Oracle SQL в режиме Speed SQL

У тебя есть 60 секунд, чтобы угадать пропущенные ключевые слова (????) в 10 SQL-выражениях.

Сможешь ли справиться со всеми?

https://devgym.oracle.com/pls/apex/f?p=10001:5000

Возвращайся каждый день — тебя ждут новые задания.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Interview Query — это платформа для подготовки к собеседованиям, особенно ориентированная на data science, аналитику, machine learning и продуктовую аналитику.

> SQL-задачи
> Статистику и вероятности
> A/B-тестирование
> Вопросы по моделям машинного обучения
> Продуктовые кейсы

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Шпаргалка по оптимизации SQL

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
Совет по Postgres: клонирование схемы с помощью CREATE TABLE LIKE.

В Postgres есть удобный способ создать таблицу с той же схемой, что и у другой таблицы:

CREATE TABLE new_table (LIKE existing_table INCLUDING ALL);


Ключевое слово INCLUDING ALL гарантирует, что будут скопированы все атрибуты схемы:

> определения столбцов
> типы данных
> ограничения (включая первичные ключи, уникальные и check-ограничения)
> индексы
> параметры хранения

То есть копируется всё, кроме самих данных.

Когда это может пригодиться:

🔸для создания резервной схемы и тестирования изменений над продакшен-таблицей
🔸для создания временной таблицы с той же структурой — например, для staging или трансформации данных
🔸при архивировании — чтобы структура архивной таблицы соответствовала оригинальной
🔸чтобы обеспечить一 cогласованностьность схем у связанных таблиц

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍32
Разработчики старой школы, новой школы, вайбкодеры — все обожают regex. Это же идеальный инструмент для работы с текстом и переменными. В Postgres отличная поддержка регулярных выражений. Вот примеры запросов на поиск и замену текста.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Оконные функции в Postgres — это супер

С помощью SQL можно быстро:

🔸Считать накопительные суммы
🔸Строить агрегаты по группам / партициям
🔸Создавать рейтинги и ранжирование
🔸Делать lag/lead-анализ — сравнивать значения из разных строк
🔸Вычислять скользящие (moving/rolling) средние

Вот практический туториал

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
pg_eventserv: передача событий Postgres LISTEN/NOTIFY в WebSocket-соединения.

https://github.com/crunchydata/pg_eventserv

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
2
This media is not supported in your browser
VIEW IN TELEGRAM
Отслеживай отношения родитель–потомок в Oracle SQL с помощью CONNECT BY:

SELECT ...
FROM ...
START WITH <корневая_запись>
CONNECT BY PRIOR parent_row = child_row


Полезные вспомогательные функции:

🔸LEVEL — глубина текущей строки в иерархии
🔸CONNECT_BY_ISLEAF — возвращает 1, если у строки нет потомков
🔸SYS_CONNECT_BY_PATH — путь от корня до текущей строки

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Почему Postgres становится таким популярным для AI-нагрузок?

Нам не раз задавали этот вопрос — и мы понимаем почему: 30-летняя реляционная СУБД на первый взгляд не выглядит как инструмент, созданный для мира ИИ.


Но вот почему Postgres активно набирает популярность в AI-сфере:

Интеграция AI с существующей или новой data-инфраструктурой
AI-приложения, как правило, работают с уже существующими структурированными данными — пользователи, клиенты, продукты, транзакции и т.д.
Postgres позволяет объединять эмбеддинги и выходные данные моделей с реляционными таблицами, чтобы строить AI-инструменты поверх существующих систем.

Поддержка векторных типов данных
Расширение pgvector добавляет хранение эмбеддингов прямо в Postgres. Это зрелое, проверенное решение, поддерживаемое большинством поставщиков и пользователей Postgres.
pgvector также предоставляет продвинутые стратегии индексации (например, HNSW), которые ускоряют поиск и работу с векторами.

Готовность к продакшену
Postgres покрывает все требования бизнеса: бэкапы, connection pooling, высокая доступность.
Это значит, что на нём можно запускать cutting-edge AI-проекты на стабильной, зрелой платформе, готовой к реальной эксплуатации.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Материализованные представления (Materialized Views, MVs) хранят результаты запроса.

Основная проблема — поддержание их в актуальном состоянии.

Killianlynchh показывает, как материализованные представления в реальном времени (с параметром ON QUERY COMPUTATION в Oracle Database) позволяют получать актуальные данные, применяя изменения к устаревшим представлениям.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Вы можете использовать ORDER BY по столбцам, которых нет в SELECT-списке запроса.

...за исключением случая:

SELECT DISTINCT this FROM t ORDER BY that  --  некорректно!


Почему так?

DISTINCT удаляет дубликаты из выбранных значений и формирует новую таблицу,
поэтому доступны только те столбцы, что явно указаны в SELECT

Объяснение от Lukas Eder — blog.jooq.org

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
Типы индексов в базах данных, которые должен знать каждый разработчик

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
9