PostgreSQL добавил поддержку Row-Level Security (RLS) ещё в 2016 году
Но большинство команд до сих пор её не включают.
А ведь это поразительно — потому что Postgres уже давно является основой для:
• Мультиарендных SaaS-приложений
• Встроенной аналитики
• Бэкендов для мобильных приложений
Он ACID-совместим. Надёжен как скала. Идеально подходит для транзакционных нагрузок.
Но с включённым RLS Postgres становится ещё и уровнем управления доступом.
Представим, что вы разрабатываете мультиарендную CRM:
1. Все данные клиентов хранятся в одной таблице
2. Пользователь должен видеть только свои записи
3. Вы добавляете
А потом кто-то забывает добавить это условие.
Бах! Утечка данных. Классическая ошибка контроля доступа.🔨
С RLS:
⏩ Вы один раз объявляете политику
⏩ Устанавливаете
⏩ Выполняете запросы без забот о фильтрации по
Теперь база сама принудительно применяет правила. Даже "плохие" запросы подчиняются политике, заданной на уровне СУБД — риск случайной утечки минимален.
Это подходит для:
• SaaS-бэкендов
• Аналитики на общих данных
• Внутренних инструментов
Везде, где нужен доступ на уровне строк без переписывания запросов.
Если вы полностью полагаетесь на проверки доступа на уровне приложения — подумайте о переносе части этой ответственности в СУБД с помощью RLS. Это и безопаснее, и проще.🤨
👉 @SQLPortal
Но большинство команд до сих пор её не включают.
А ведь это поразительно — потому что Postgres уже давно является основой для:
• Мультиарендных SaaS-приложений
• Встроенной аналитики
• Бэкендов для мобильных приложений
Он ACID-совместим. Надёжен как скала. Идеально подходит для транзакционных нагрузок.
Но с включённым RLS Postgres становится ещё и уровнем управления доступом.
Представим, что вы разрабатываете мультиарендную CRM:
1. Все данные клиентов хранятся в одной таблице
2. Пользователь должен видеть только свои записи
3. Вы добавляете
WHERE tenant_id =
? в каждый запросА потом кто-то забывает добавить это условие.
Бах! Утечка данных. Классическая ошибка контроля доступа.
С RLS:
tenant_id
при подключенииtenant_id
Теперь база сама принудительно применяет правила. Даже "плохие" запросы подчиняются политике, заданной на уровне СУБД — риск случайной утечки минимален.
Это подходит для:
• SaaS-бэкендов
• Аналитики на общих данных
• Внутренних инструментов
Везде, где нужен доступ на уровне строк без переписывания запросов.
Если вы полностью полагаетесь на проверки доступа на уровне приложения — подумайте о переносе части этой ответственности в СУБД с помощью RLS. Это и безопаснее, и проще.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Использование привязанных переменных — ключ к быстрой работе приложений
Пишите SQL вот так:
Каждое новое значение VAR создаёт новый запрос ⇒ много разборов ⇒ медленно
Используйте привязку вот так:
Один и тот же запрос для любого значения ⇒ один разбор ⇒ быстро
👉 @SQLPortal
Пишите SQL вот так:
'SELECT ... WHERE col = ' || var
Каждое новое значение VAR создаёт новый запрос ⇒ много разборов ⇒ медленно
Используйте привязку вот так:
'SELECT ... WHERE col = :bind'
Один и тот же запрос для любого значения ⇒ один разбор ⇒ быстро
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤1
Внутренняя архитектура PostgreSQL
👉 @SQLPortal
1. Архитектура на основе процессов
PostgreSQL использует архитектуру «один процесс на соединение», то есть для каждого клиента создаётся отдельный процесс операционной системы.
2. Журнал предзаписи
PostgreSQL применяет WAL для обеспечения надёжности данных, согласованности, восстановления после сбоев и репликации
3. Многоверсионность и управление параллелизмом
Благодаря MVCC PostgreSQL позволяет выполнять параллельные транзакции без необходимости жёсткой блокировки данных
4. Конвейер выполнения запросов
Запросы в PostgreSQL проходят через чёткую последовательность этапов: разбор, планирование, исполнение и возврат результатов
5. Система индексации
PostgreSQL поддерживает множество типов индексов (B-Tree, GIN, GiST, BRIN и др.) для оптимизации запросов под разные типы данных
6. Партиционирование таблиц
PostgreSQL позволяет разбивать большие таблицы на более мелкие части (партиции) по диапазону значений, списку или хешу, что упрощает управление и ускоряет обработку.
7. Логическая декодировка
Позволяет транслировать изменения из WAL в логическом формате, что полезно для репликации и систем отслеживания изменений (CDC).
8. Расширения
PostgreSQL построен как модульная система и поддерживает расширения, которые позволяют добавлять новые функции и возможности.
9. Сбор статистики
Механизм сбора статистики PostgreSQL отслеживает активность в реальном времени, что помогает анализировать и оптимизировать производительность базы данных
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6
Когда ты пишешь SQL-запрос, порядок команд вроде бы логичен SELECT, FROM, WHERE и тд. Но база данных выполняет их в другом порядке 😄
Настоящая последовательность выполнения👇
💡 Поэтому
На фото слева. то в каком порядке мы обычно пишем SQL-запрос, а справа как реально работает база данных под капотом. Запомни эту логику, и ты избежишь кучи ошибок в SQL-запросах
👉 @SQLPortal
Настоящая последовательность выполнения
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT
WHERE
не может использовать SUM()
— он идёт до агрегации. А HAVING
— можноНа фото слева. то в каком порядке мы обычно пишем SQL-запрос, а справа как реально работает база данных под капотом. Запомни эту логику, и ты избежишь кучи ошибок в SQL-запросах
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥7🤯3👀1
Эта фишка спасёт, когда ты не понимаешь, куда делись строки
Если ты этого не знал — сохраняй
👉 @SQLPortal
Если ты этого не знал — сохраняй
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤3🔥2
Обязательно загляни на DB-Engines.com – это своего рода “топ-чарт” самых популярных СУБД в мире
Ежемесячный рейтинг, который показывает, насколько популярна каждая СУБД по таким параметрам, как: количество упоминаний в интернете, наличие вакансий с упоминанием СУБД, активность на Stack Overflow и тд.
На апрель 2025 в топе:
🍩 Oracle
🍩 MySQL
🍩 Microsoft SQL Server
Этот рейтинг — не о том, какая СУБД «лучшая», а о том, какие технологии чаще используются, обсуждаются и востребованы на рынке
👉 @SQLPortal
Ежемесячный рейтинг, который показывает, насколько популярна каждая СУБД по таким параметрам, как: количество упоминаний в интернете, наличие вакансий с упоминанием СУБД, активность на Stack Overflow и тд.
На апрель 2025 в топе:
Этот рейтинг — не о том, какая СУБД «лучшая», а о том, какие технологии чаще используются, обсуждаются и востребованы на рынке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2🔥1
Понимание типов баз данных
Чтобы принимать наилучшие решения для наших проектов, важно понимать различные типы баз данных, доступные на рынке. Необходимо учитывать ключевые характеристики каждого типа, популярные варианты, а также сравнивать их области применения😁
👉 @SQLPortal
Чтобы принимать наилучшие решения для наших проектов, важно понимать различные типы баз данных, доступные на рынке. Необходимо учитывать ключевые характеристики каждого типа, популярные варианты, а также сравнивать их области применения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь выучить SQL с нуля за вечер? шутка 👏
Но всё же держи отличный интерактивный сайт — sqlteaching.com
Здесь ты освоишь основы SQL без лишней теории, без регистрации, всё по шагам
Вот прям идеален для начинающих и тех, кто просто забыл синтаксис
👉 @SQLPortal
Но всё же держи отличный интерактивный сайт — sqlteaching.com
Здесь ты освоишь основы SQL без лишней теории, без регистрации, всё по шагам
Вот прям идеален для начинающих и тех, кто просто забыл синтаксис
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3🔥2
SQL-трюк, который знают не все: QUALIFY
Если работаешь с оконными функциями —> забудь про лишние подзапросы
👉 @SQLPortal
Если работаешь с оконными функциями —> забудь про лишние подзапросы
QUALIFY
позволяет фильтровать строки прямо после оконной функцииPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10😁4❤3
Ловите учебные курсы по PostgreSQL
⏩ DBA1. Администрирование PostgreSQL. Базовый курс
⏩ DBA2. Администрирование PostgreSQL. Настройка и мониторинг
⏩ DBA3. Администрирование PostgreSQL. Резервное копирование и репликация
Ставь лайк если поймал😂
👉 @SQLPortal | #курсы
Ставь лайк если поймал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤4🌭1👀1
Шпаргалка по SQL на русском!
Нашёл крутой репозиторий: ILYA-NASA/MySQL —> коротко, по делу и без лишней воды
Рекомендую сохранить себе и влепить лайк💪
👉 @SQLPortal
Нашёл крутой репозиторий: ILYA-NASA/MySQL —> коротко, по делу и без лишней воды
Рекомендую сохранить себе и влепить лайк
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😁2
Инструмент Text-to-SQL, который действительно работает
Vanna — это open-source фреймворк RAG для генерации сложных Text-to-SQL запросов. Он обрабатывает динамические данные и позволяет обучать собственные RAG-модели для повышения точности.
Полностью open-source: https://github.com/vanna-ai/vanna
👉 @SQLPortal
Vanna — это open-source фреймворк RAG для генерации сложных Text-to-SQL запросов. Он обрабатывает динамические данные и позволяет обучать собственные RAG-модели для повышения точности.
Полностью open-source: https://github.com/vanna-ai/vanna
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
This media is not supported in your browser
VIEW IN TELEGRAM
MySQLTutorial.org — один из старейших англоязычных сайтов по обучению SQL
По сей день он остаётся популярным источником для изучения основ и практики работы с базой данных MySQL
Все статьи просты, логично структурированы и подкреплены реальными примерами🤔
👉 @SQLPortal
По сей день он остаётся популярным источником для изучения основ и практики работы с базой данных MySQL
Все статьи просты, логично структурированы и подкреплены реальными примерами
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3