Postgres 18: CREATE FOREIGN TABLE LIKE. Можно не тянуть схему удалённой таблицы и просто создать её дубликат по месту.
По сути, ты клонируешь структуру существующей таблицы через LIKE, включая значения по умолчанию и ограничения, и сразу привязываешь её к удалённой таблице через foreign server.
👉 @SQLPortal
CREATE FOREIGN TABLE sales (
LIKE archive_sales INCLUDING DEFAULTS INCLUDING CONSTRAINTS
)
SERVER archive
OPTIONS (schema_name 'public', table_name 'sales_24');
По сути, ты клонируешь структуру существующей таблицы через LIKE, включая значения по умолчанию и ограничения, и сразу привязываешь её к удалённой таблице через foreign server.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
SQL-Interview-Questions.pdf
1.2 MB
Подготовлен свежий сборник из 40 SQL-вопросов для технических собеседований. В него вошли все ключевые темы, которые обычно проверяют на позиции, связанные с базами данных
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2
Доступ к атрибутам JSON, хранящимся в Oracle AI Database, можно организовать через простую точечную нотацию или через функции семейства JSON_VALUE.
Точечная нотация выглядит как <alias>.<column>.<path>.<to><attr> и позволяет обращаться к атрибутам прямо из SQL.
Аналогичный доступ можно оформить через JSON_VALUE(column, '$.<path>.<to><attr>'). Разница в том, что точечная нотация вернёт NULL, если не сможет обработать путь, а JSON_VALUE позволяет задавать поведение при ошибках и управлять типами возвращаемых данных.
JSON можно хранить в колонках VARCHAR2/CLOB/BLOB и проверять с помощью ограничения IS JSON. Для выборки подойдут как точечная нотация, так и JSON_VALUE, JSON_QUERY или JSON_TABLE.
Пример:
👉 @SQLPortal
Точечная нотация выглядит как <alias>.<column>.<path>.<to><attr> и позволяет обращаться к атрибутам прямо из SQL.
Аналогичный доступ можно оформить через JSON_VALUE(column, '$.<path>.<to><attr>'). Разница в том, что точечная нотация вернёт NULL, если не сможет обработать путь, а JSON_VALUE позволяет задавать поведение при ошибках и управлять типами возвращаемых данных.
JSON можно хранить в колонках VARCHAR2/CLOB/BLOB и проверять с помощью ограничения IS JSON. Для выборки подойдут как точечная нотация, так и JSON_VALUE, JSON_QUERY или JSON_TABLE.
Пример:
CREATE TABLE json_data ( data BLOB CHECK ( data IS JSON ) );
INSERT INTO json_data VALUES
( ' { array : [ 1, 2, 3 ], string : "text", date : "2023-01-01" }' );
SELECT j.data.array[0] string_number, -- по умолчанию varchar2(4000)
JSON_VALUE ( data, '$.array[2]' RETURNING NUMBER ) number_number,
JSON_VALUE ( data, '$.date' ) string_date,
JSON_VALUE ( data, '$.date' RETURNING NUMBER DEFAULT 0 ON ERROR ) not_number
FROM json_data j
WHERE j.data.string = 'text';
STRING_NUMBER NUMBER_NUMBER STRING_DATE NOT_NUMBER
-------------- -------------- ------------ ----------
1 3 2023-01-01 0
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2
Ты правда шаришь в SQL? 😊
Какой запрос вернёт накопительный итог продаж по дате?
A.
B.
C.
👉 @SQLPortal
Какой запрос вернёт накопительный итог продаж по дате?
A.
SELECT Date, SUM(Amount)
FROM Sales GROUP BY Date;
B.
SELECT Date, SUM(Amount) OVER (ORDER BY Date)
FROM Sales;
C.
SELECT Date, RUNNING(Amount) FROM Sales;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Postgres 18 получил поддержку виртуальных вычисляемых колонок. Вычисляемые STORED-колонки в Postgres уже были несколько версий подряд.
Вычисляемые колонки позволяют:
• создавать колонку на основе других данных
• ссылаться на значения из других колонок
• заранее считать колляции или любые вычисления в базе, а не в приложении
Синтаксис GENERATED ALWAYS AS открывает выражение, а в конце указывается режим VIRTUAL или STORED.
Виртуальные вычисляемые колонки пересчитываются при каждом чтении, поэтому не подходят для тяжёлых вычислений. Для таких случаев лучше использовать STORED-колонку или даже expression index. Но они удобны, когда значение нужно редко и его логично вычислять на лету.
Пример:
👉 @SQLPortal
Вычисляемые колонки позволяют:
• создавать колонку на основе других данных
• ссылаться на значения из других колонок
• заранее считать колляции или любые вычисления в базе, а не в приложении
Синтаксис GENERATED ALWAYS AS открывает выражение, а в конце указывается режим VIRTUAL или STORED.
Виртуальные вычисляемые колонки пересчитываются при каждом чтении, поэтому не подходят для тяжёлых вычислений. Для таких случаев лучше использовать STORED-колонку или даже expression index. Но они удобны, когда значение нужно редко и его логично вычислять на лету.
Пример:
CREATE TABLE products (
id serial PRIMARY KEY,
price numeric,
tax_rate numeric DEFAULT 0.05,
total_price numeric GENERATED ALWAYS AS (price * (1 + tax_rate)) VIRTUAL
);
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5❤3
Postgres 18 меняет дефолтные настройки целостности данных
В новом релизе опция data checksums теперь включена по умолчанию. Раньше админам нужно было явно передавать --data-checksums при initdb, иначе кластер поднимался без проверки страниц на тихую порчу. Теперь достаточно обычного initdb -D /data/pg18 — каждая 8KB-страница таблиц и индексов получает checksum, который проверяется при чтении. Это тот же механизм, на который опирается pgBackRest при валидации бэкапов.
При этом меняются и правила игры для апгрейдов через pg_upgrade: старый и новый кластеры должны быть подняты с одинаковыми настройками checksums. Если ваш текущий кластер без checksums, прямой апгрейд на «дефолтный» Postgres 18 провалится. Временный обходной путь — инициализировать новый кластер с флагом --no-data-checksums, чтобы выровнять конфигурацию. Более правильная стратегия будет, заранее включить checksums с помощью pg_checksums (да, с даунтаймом), а в больших инсталляциях сначала включать их на реплике и переключаться уже на неё.
В итоге checksums из рекомендованной опции превращаются в норму по умолчанию. Если вы до сих пор жили без них, самое время заложить в план обслуживания включение checksums и пересмотреть сценарии major-апгрейдов Postgres.
👉 @SQLPortal
В новом релизе опция data checksums теперь включена по умолчанию. Раньше админам нужно было явно передавать --data-checksums при initdb, иначе кластер поднимался без проверки страниц на тихую порчу. Теперь достаточно обычного initdb -D /data/pg18 — каждая 8KB-страница таблиц и индексов получает checksum, который проверяется при чтении. Это тот же механизм, на который опирается pgBackRest при валидации бэкапов.
При этом меняются и правила игры для апгрейдов через pg_upgrade: старый и новый кластеры должны быть подняты с одинаковыми настройками checksums. Если ваш текущий кластер без checksums, прямой апгрейд на «дефолтный» Postgres 18 провалится. Временный обходной путь — инициализировать новый кластер с флагом --no-data-checksums, чтобы выровнять конфигурацию. Более правильная стратегия будет, заранее включить checksums с помощью pg_checksums (да, с даунтаймом), а в больших инсталляциях сначала включать их на реплике и переключаться уже на неё.
В итоге checksums из рекомендованной опции превращаются в норму по умолчанию. Если вы до сих пор жили без них, самое время заложить в план обслуживания включение checksums и пересмотреть сценарии major-апгрейдов Postgres.
Please open Telegram to view this post
VIEW IN TELEGRAM
Crunchy Data
Postgres 18 New Default for Data Checksums and How to Deal with Upgrades | Crunchy Data Blog
Postgres 18 defaults to checksums on. This is a good feature for data integrity but might catch you off guard with an upgrade.
👍2
Работаешь с массивами? Оператор ANY позволяет проверить список и увидеть, совпадает ли хоть один элемент.
color = 'red' срабатывает только для одиночного значения
'Red' = ANY(...) работает, когда у тебя колонка со списком вроде ['red', 'blue', 'green']
👉 @SQLPortal
SELECT * FROM products
WHERE 'Red' = ANY(colors);
color = 'red' срабатывает только для одиночного значения
'Red' = ANY(...) работает, когда у тебя колонка со списком вроде ['red', 'blue', 'green']
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4
SQL Case Files
Изучай SQL, параллельно разбирая детективные расследования.
Пиши запросы, чтобы узнать больше о подозреваемых, находить улики и закрывать дела.
Играть здесь: https://sqlcasefiles.com
👉 @SQLPortal
Изучай SQL, параллельно разбирая детективные расследования.
Пиши запросы, чтобы узнать больше о подозреваемых, находить улики и закрывать дела.
Играть здесь: https://sqlcasefiles.com
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
DuckLake теперь поддерживает встраивание данных для каталогов PostgreSQL и SQLite! Можно обойти проблему мелких файлов в lakehouse с любым каталогом, который поддерживает DuckLake.
Обнови расширение DuckLake в любом клиенте на DuckDB 1.4.x, чтобы использовать эту фичу.
P.S. Не забудь сделать flush!
👉 @SQLPortal
Обнови расширение DuckLake в любом клиенте на DuckDB 1.4.x, чтобы использовать эту фичу.
P.S. Не забудь сделать flush!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Продвинутый планировщик задач, который живёт в экосистеме PostgreSQL
Утилита полностью управляемая через базу без серверных конфигов. Поддерживает пайплайны задач, запуск SQL и внешних команд, умные ретраи после сбоев и контроль параллельного запуска тяжёлых джобов.
👉 @SQLPortal
Утилита полностью управляемая через базу без серверных конфигов. Поддерживает пайплайны задач, запуск SQL и внешних команд, умные ретраи после сбоев и контроль параллельного запуска тяжёлых джобов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
SelfDB — самостоятельно размещенный BaaS как альтернатива Supabase, ориентированная на тех, кто хочет держать базу, схемы и запросы под полным контролем, а не прятать всё за абстракциями
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
SQL for Data Science 📈.pdf
225.1 KB
Чтобы быстро освежить в голове SQL-паттерны, которые постоянно встречаются в аналитике и задачах на данных. Удобно как мини-шпаргалка перед собесом, тестовым или когда нужно быстро накидать запрос и не тупить на синтаксисе. ⛄️
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁3❤1
📘 На Stepik вышел курс — «SQL для технических собеседований»
Теряете офферы на SQL-секции? Знаете синтаксис, но теряетесь на лайвкодинге? Этот курс — прямой путь к прохождению технических интервью.
• Базовый SQL: SELECT, WHERE, JOIN — база для любого собеседования
• Агрегация: GROUP BY, HAVING — закрываем 80% задач на интервью
• Подзапросы, CTE, рекурсии — то, что спрашивают на Middle+
• Оконные функции: ROW_NUMBER, RANK, LAG/LEAD — любимая тема интервьюеров
• Оптимизация: индексы, план выполнения — отличает сильных кандидатов
• Лайвкодинг: как думать вслух и не зависать под давлением
70+ задач из реальных собеседований в Яндексе, Тинькофф, FAANG
🎓 Сертификат — добавьте в резюме или LinkedIn
🚀 Скидка 35%, действует 48 часов
👉 Пройти курс на Stepik
Теряете офферы на SQL-секции? Знаете синтаксис, но теряетесь на лайвкодинге? Этот курс — прямой путь к прохождению технических интервью.
• Базовый SQL: SELECT, WHERE, JOIN — база для любого собеседования
• Агрегация: GROUP BY, HAVING — закрываем 80% задач на интервью
• Подзапросы, CTE, рекурсии — то, что спрашивают на Middle+
• Оконные функции: ROW_NUMBER, RANK, LAG/LEAD — любимая тема интервьюеров
• Оптимизация: индексы, план выполнения — отличает сильных кандидатов
• Лайвкодинг: как думать вслух и не зависать под давлением
70+ задач из реальных собеседований в Яндексе, Тинькофф, FAANG
🎓 Сертификат — добавьте в резюме или LinkedIn
🚀 Скидка 35%, действует 48 часов
👉 Пройти курс на Stepik
👍4😁3💊3
До Postgres 18 планировщик не рассматривал многоколонные B-tree индексы, если в запросе не использовался их самый левый столбец.
С появлением skip scan многоколонный индекс теперь может использоваться для выполнения запросов по любому из столбцов.
👉 @SQLPortal
С появлением skip scan многоколонный индекс теперь может использоваться для выполнения запросов по любому из столбцов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3
Зимняя уборка в Postgres: посмотрите на самые медленные запросы — где не хватает индексов или есть простор для оптимизации.
В туториале по анализу производительности запросов:
- как использовать pg_stat_statements
- примеры SQL для поиска самых медленных запросов — можно просто скопировать😉
👉 @SQLPortal
В туториале по анализу производительности запросов:
- как использовать pg_stat_statements
- примеры SQL для поиска самых медленных запросов — можно просто скопировать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥2😁1
День добрый, друзья!
Если вы только заходите в ML или уже пробуете что-то ковырять в моделях, то мы собрали для вас небольшую, но очень толковую папку – 5 каналов, которые закрывают базовые потребности любого начинающего спеца
Что внутри:
🔵 Обучающий канал – простыми словами про матчасть, алгоритмы, фреймворки, пайплайны. Даст понимание что и зачем происходит 👌
🔵 Авторские блоги практиков: у них найдете посты, как парни учились, какие ошибки делали, что сейчас используют в проде, а также сможете задать вопросы в комментах
Там очень разный, но сильный бэкграунд:
В общем, собрали только то, что поможет разложить профессию по полочкам и не потеряться в бесконечных обучалках)
Авторы подготовили для вас списки самых полезных постов – можно заходить и читать! Забирайте, пока всё свежее и актуальное: https://t.me/addlist/VwyBngD1H0cwYzIy
Материал собран при помощи Менеджерского нерва🙂
Если вы только заходите в ML или уже пробуете что-то ковырять в моделях, то мы собрали для вас небольшую, но очень толковую папку – 5 каналов, которые закрывают базовые потребности любого начинающего спеца
Что внутри:
Там очень разный, но сильный бэкграунд:
Дима – основатель собственной школы по DS с большим опытом в BigTech, Паша – ML-инженер в ЦУМе с крутой историей карьерного роста
Саша – учился в Бауманке, а теперь прогнозирует в аналитике Яндекс Лавки, Ваня – пишет о своем пути в ML с нуля и работе DS в Яндексе
В общем, собрали только то, что поможет разложить профессию по полочкам и не потеряться в бесконечных обучалках)
Авторы подготовили для вас списки самых полезных постов – можно заходить и читать! Забирайте, пока всё свежее и актуальное: https://t.me/addlist/VwyBngD1H0cwYzIy
Материал собран при помощи Менеджерского нерва
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Хорошие новости для пользователей Postgres под конец года. Команда TimescaleDB выпустила и открыла исходники расширения pg_textsearch.
В Postgres уже есть встроенный полнотекстовый поиск, а это расширение делает его более современным и продвинутым за счёт добавления ранжирования BM25.
👉 @SQLPortal
В Postgres уже есть встроенный полнотекстовый поиск, а это расширение делает его более современным и продвинутым за счёт добавления ранжирования BM25.
Please open Telegram to view this post
VIEW IN TELEGRAM
Tiger Data Blog
From ts_rank to BM25. Introducing pg_textsearch: True BM25 Ranking and Hybrid Retrieval Inside Postgres | Tiger Data
pg_textsearch brings BM25 ranking to enable hybrid search to Postgres. Build RAG systems with keyword precision and vector semantics in one database.
👍2
Зимняя уборка в Postgres: проверь неиспользуемые индексы и удали их.
Это ускорит записи, снизит расход памяти и освободит место на диске на следующий год.
👉 @SQLPortal
Это ускорит записи, снизит расход памяти и освободит место на диске на следующий год.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1