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-запрос?
Варианты ответов:
• Избегать использования
• Использовать
• По возможности избегать
• Добавить индексы в базу данных
• Проанализировать план выполнения запроса (
👉 @SQLPortal
Варианты ответов:
• Избегать использования
SELECT DISTINCT
• Использовать
INNER JOIN
вместо фильтрации через WHERE
• По возможности избегать
JOIN
вообще (рассмотреть денормализацию)• Добавить индексы в базу данных
• Проанализировать план выполнения запроса (
EXPLAIN
/ QUERY PLAN
)Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤3
7 сайтов для практики логики программирования — бесплатно, интерактивно и интересно:
① adventjs.dev — задачи на JavaScript с новогодней атмосферой
② exercism.org — практика с менторством и большим выбором языков
③ leetcode.com — топовая платформа для подготовки к интервью
④ codewars.com — "ката"-задачи и система рангов
⑤ coderbyte.com — челленджи и оценки навыков
⑥ codesignal.com — тренировки и эмуляция интервью
⑦ hackerrank.com — задачи по алгоритмам, SQL, DevOps и др.
👉 @SQLPortal
① adventjs.dev — задачи на JavaScript с новогодней атмосферой
② exercism.org — практика с менторством и большим выбором языков
③ leetcode.com — топовая платформа для подготовки к интервью
④ codewars.com — "ката"-задачи и система рангов
⑤ coderbyte.com — челленджи и оценки навыков
⑥ codesignal.com — тренировки и эмуляция интервью
⑦ hackerrank.com — задачи по алгоритмам, SQL, DevOps и др.
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
Что из перечисленного обязательно присутствует в каждой оконной функции SQL
a. DENSE_RANK
b. PARTITION
c. OVER
d. RANK
e. Всё вышеперечисленное
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2
Совет по продуктивной работе с Postgres: шаблонные базы данных
Многие разработчики используют шаблонные базы данных для настройки дев-окружений. Суть подхода в следующем: вы запускаете один экземпляр Postgres для разработки и при необходимости создаёте/удаляете базы данных. При этом база данных для разработки создаётся на основе шаблона, который синхронизирован со схемой продакшена.
Для распределённых команд, использующих облачные решения, шаблонная база — это экономичный и безопасный способ работы.
Преимущества использования шаблонной базы данных для разработки:
● Упрощает работу с расширениями, конфигурацией Postgres, управлением версиями и установкой зависимостей — всё, что обычно замедляет локальную разработку
● Обеспечивает соответствие схемы продакшену, так как шаблон можно быстро создать из полной копии базы без данных
● Сокращает время на развёртывание и удаление дев-машин
● Позволяет использовать анонимизированные тестовые данные, подходящие для разработки
Подробнее о шаблонных базах данных
➡️ Создайте шаблон на основе продакшена, выгрузив только схему и расширения:
Флаг
➡️ Создайте базу и восстановите в неё шаблон:
Добавьте сид-данные на этом этапе. Это позволит быстро клонировать шаблон без необходимости повторного восстановления.
➡️ Разрешите использовать базу как шаблон:
Важно: использовать шаблонные базы можно только от имени суперпользователя Postgres. На платформе Crunchy Bridge это поддерживается, но не все облачные провайдеры предоставляют доступ к суперюзеру.
➡️ Создайте новую базу на основе шаблона:
Это создаст копию
➡️ Обновите строку подключения, чтобы использовать новую базу в разработке — и можно начинать писать код.
👉 @SQLPortal
Многие разработчики используют шаблонные базы данных для настройки дев-окружений. Суть подхода в следующем: вы запускаете один экземпляр 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
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
На данный момент pgCompare поддерживает следующие СУБД: Oracle, PostgreSQL, DB2, MariaDB, MySQL и MSSQL.
https://github.com/CrunchyData/pgCompare
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Столбцы с типами JSON и JSONB удобны, когда нужно хранить произвольные данные без строгой схемы. Но иногда хочется добавить хоть какую-то валидацию структуры.
Для этого можно использовать расширение
👉 @SQLPortal
Для этого можно использовать расширение
pg_jsonschema
— оно позволяет задавать JSON-схему и тем самым контролировать структуру данных в таких столбцах.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3
Уже пробовал https://sql-workbench.com?
Запускай SQL-запросы к удалённым и локальным данным — таким как CSV, JSON и Parquet и визуализируй результат прямо в браузере, через duckdb в WebAssembly (WASM).
Удобно для быстрой аналитики без поднятия сервера или установки чего-либо.😎
👉 @SQLPortal
Запускай SQL-запросы к удалённым и локальным данным — таким как CSV, JSON и Parquet и визуализируй результат прямо в браузере, через duckdb в WebAssembly (WASM).
Удобно для быстрой аналитики без поднятия сервера или установки чего-либо.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Комментарии к столбцам в Postgres — это удобный способ документировать назначение столбца прямо внутри базы данных. Часто именно здесь уместно указывать уровень чувствительности данных.
Добавить комментарий к столбцу можно простой SQL-командой:
➞
Комментарии хранятся как часть внутренней схемы таблицы. Самый простой способ их посмотреть — использовать команду:
👉 @SQLPortal
Добавить комментарий к столбцу можно простой SQL-командой:
➞
COMMENT ON COLUMN customers.ssn IS 'This is Sensitive PII';
Комментарии хранятся как часть внутренней схемы таблицы. Самый простой способ их посмотреть — использовать команду:
\d+ customers
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
У тебя есть 60 секунд, чтобы угадать пропущенные ключевые слова (????) в 10 SQL-выражениях.
Сможешь ли справиться со всеми?
https://devgym.oracle.com/pls/apex/f?p=10001:5000
Возвращайся каждый день — тебя ждут новые задания.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Interview Query — это платформа для подготовки к собеседованиям, особенно ориентированная на data science, аналитику, machine learning и продуктовую аналитику.
> SQL-задачи
> Статистику и вероятности
> A/B-тестирование
> Вопросы по моделям машинного обучения
> Продуктовые кейсы
👉 @SQLPortal
> SQL-задачи
> Статистику и вероятности
> A/B-тестирование
> Вопросы по моделям машинного обучения
> Продуктовые кейсы
Please open Telegram to view this post
VIEW IN TELEGRAM
Interview Query
Interview Questions
Prepare for your next data science and machine learning interview by practicing questions from top tech companies like Facebook, Google, and more.
Совет по Postgres: клонирование схемы с помощью CREATE TABLE LIKE.
В Postgres есть удобный способ создать таблицу с той же схемой, что и у другой таблицы:
Ключевое слово
> определения столбцов
> типы данных
> ограничения (включая первичные ключи, уникальные и check-ограничения)
> индексы
> параметры хранения
То есть копируется всё, кроме самих данных.
Когда это может пригодиться:
🔸 для создания резервной схемы и тестирования изменений над продакшен-таблицей
🔸 для создания временной таблицы с той же структурой — например, для staging или трансформации данных
🔸 при архивировании — чтобы структура архивной таблицы соответствовала оригинальной
🔸 чтобы обеспечить一 cогласованностьность схем у связанных таблиц
👉 @SQLPortal
В Postgres есть удобный способ создать таблицу с той же схемой, что и у другой таблицы:
CREATE TABLE new_table (LIKE existing_table INCLUDING ALL);
Ключевое слово
INCLUDING ALL
гарантирует, что будут скопированы все атрибуты схемы:> определения столбцов
> типы данных
> ограничения (включая первичные ключи, уникальные и check-ограничения)
> индексы
> параметры хранения
То есть копируется всё, кроме самих данных.
Когда это может пригодиться:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3❤2
Разработчики старой школы, новой школы, вайбкодеры — все обожают regex. Это же идеальный инструмент для работы с текстом и переменными. В Postgres отличная поддержка регулярных выражений. Вот примеры запросов на поиск и замену текста.
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Оконные функции в Postgres — это супер
С помощью SQL можно быстро:
🔸 Считать накопительные суммы
🔸 Строить агрегаты по группам / партициям
🔸 Создавать рейтинги и ранжирование
🔸 Делать lag/lead-анализ — сравнивать значения из разных строк
🔸 Вычислять скользящие (moving/rolling) средние
Вот практический туториал
👉 @SQLPortal
С помощью SQL можно быстро:
Вот практический туториал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
pg_eventserv: передача событий Postgres
https://github.com/crunchydata/pg_eventserv
👉 @SQLPortal
LISTEN/NOTIFY
в WebSocket-соединения.https://github.com/crunchydata/pg_eventserv
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Отслеживай отношения родитель–потомок в Oracle SQL с помощью
Полезные вспомогательные функции:
🔸
🔸
🔸
👉 @SQLPortal
CONNECT BY
:SELECT ...
FROM ...
START WITH <корневая_запись>
CONNECT BY PRIOR parent_row = child_row
Полезные вспомогательные функции:
LEVEL
— глубина текущей строки в иерархииCONNECT_BY_ISLEAF
— возвращает 1, если у строки нет потомковSYS_CONNECT_BY_PATH
— путь от корня до текущей строкиPlease open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Почему Postgres становится таким популярным для AI-нагрузок?
Но вот почему Postgres активно набирает популярность в AI-сфере:
➤ Интеграция AI с существующей или новой data-инфраструктурой
AI-приложения, как правило, работают с уже существующими структурированными данными — пользователи, клиенты, продукты, транзакции и т.д.
Postgres позволяет объединять эмбеддинги и выходные данные моделей с реляционными таблицами, чтобы строить AI-инструменты поверх существующих систем.
➤ Поддержка векторных типов данных
Расширение pgvector добавляет хранение эмбеддингов прямо в Postgres. Это зрелое, проверенное решение, поддерживаемое большинством поставщиков и пользователей Postgres.
pgvector также предоставляет продвинутые стратегии индексации (например, HNSW), которые ускоряют поиск и работу с векторами.
➤ Готовность к продакшену
Postgres покрывает все требования бизнеса: бэкапы, connection pooling, высокая доступность.
Это значит, что на нём можно запускать cutting-edge AI-проекты на стабильной, зрелой платформе, готовой к реальной эксплуатации.
👉 @SQLPortal
Нам не раз задавали этот вопрос — и мы понимаем почему: 30-летняя реляционная СУБД на первый взгляд не выглядит как инструмент, созданный для мира ИИ.
Но вот почему Postgres активно набирает популярность в AI-сфере:
➤ Интеграция AI с существующей или новой data-инфраструктурой
AI-приложения, как правило, работают с уже существующими структурированными данными — пользователи, клиенты, продукты, транзакции и т.д.
Postgres позволяет объединять эмбеддинги и выходные данные моделей с реляционными таблицами, чтобы строить AI-инструменты поверх существующих систем.
➤ Поддержка векторных типов данных
Расширение pgvector добавляет хранение эмбеддингов прямо в Postgres. Это зрелое, проверенное решение, поддерживаемое большинством поставщиков и пользователей Postgres.
pgvector также предоставляет продвинутые стратегии индексации (например, HNSW), которые ускоряют поиск и работу с векторами.
➤ Готовность к продакшену
Postgres покрывает все требования бизнеса: бэкапы, connection pooling, высокая доступность.
Это значит, что на нём можно запускать cutting-edge AI-проекты на стабильной, зрелой платформе, готовой к реальной эксплуатации.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Материализованные представления (Materialized Views, MVs) хранят результаты запроса.
Основная проблема — поддержание их в актуальном состоянии.
Killianlynchh показывает, как материализованные представления в реальном времени (с параметром
👉 @SQLPortal
Основная проблема — поддержание их в актуальном состоянии.
Killianlynchh показывает, как материализованные представления в реальном времени (с параметром
ON QUERY COMPUTATION
в Oracle Database) позволяют получать актуальные данные, применяя изменения к устаревшим представлениям.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Вы можете использовать
...за исключением случая:
Почему так?
поэтому доступны только те столбцы, что явно указаны в
Объяснение от Lukas Eder — blog.jooq.org
👉 @SQLPortal
ORDER BY
по столбцам, которых нет в SELECT-списке запроса....за исключением случая:
SELECT DISTINCT this FROM t ORDER BY that -- некорректно!
Почему так?
DISTINCT
удаляет дубликаты из выбранных значений и формирует новую таблицу,поэтому доступны только те столбцы, что явно указаны в
SELECT
Объяснение от Lukas Eder — blog.jooq.org
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3