MongoDB MCP Server полностью изменил мой способ взаимодействия с базами данных.
Вместо того чтобы переключаться между 5 AI-инструментами, теперь я просто общаюсь с базой данных напрямую в IDE.
Показать пользователей, зарегистрированных на этой неделе → мгновенный SQL-запрос.
Как это использовать с Claude, VS Code и Windsurf:
1. Claude Desktop для анализа данных
Можно исследовать сложные данные без единого SQL-запроса.
Просто задаешь вопрос на естественном языке — и сразу получаешь инсайты.
Переход между таблицами, выявление паттернов и связь сущностей — всё в рамках одной простой беседы.
2. VS Code + GitHub Copilot
Создание пользователей, назначение прав, управление кластерами — буквально за секунды.
Администрирование Atlas — прямо из VS Code, без переключения вкладок.
Ты сосредоточен на разработке, AI берёт на себя всю операционку.
3. Windsurf AI + встроенный MongoDB MCP Server
Они вышли на новый уровень:
— выбираешь шаблон сервера, подключение происходит в один клик.
— загружаешь схему — и получаешь сгенерированные data-access-слои с полной типобезопасностью.
Настройка MCP-сервера максимально простая:
10 секунд. Никаких конфигураций. AI-агент подключён.
▶️ GitHub репозиторий: https://fnf.dev/4e74Eag
👉 @SQLPortal
Вместо того чтобы переключаться между 5 AI-инструментами, теперь я просто общаюсь с базой данных напрямую в IDE.
Показать пользователей, зарегистрированных на этой неделе → мгновенный SQL-запрос.
Как это использовать с Claude, VS Code и Windsurf:
1. Claude Desktop для анализа данных
Можно исследовать сложные данные без единого SQL-запроса.
Просто задаешь вопрос на естественном языке — и сразу получаешь инсайты.
Переход между таблицами, выявление паттернов и связь сущностей — всё в рамках одной простой беседы.
2. VS Code + GitHub Copilot
Создание пользователей, назначение прав, управление кластерами — буквально за секунды.
Администрирование Atlas — прямо из VS Code, без переключения вкладок.
Ты сосредоточен на разработке, AI берёт на себя всю операционку.
3. Windsurf AI + встроенный MongoDB MCP Server
Они вышли на новый уровень:
— выбираешь шаблон сервера, подключение происходит в один клик.
— загружаешь схему — и получаешь сгенерированные data-access-слои с полной типобезопасностью.
Настройка MCP-сервера максимально простая:
docker run --rm -i mongodb/mongodb-mcp-server:latest
10 секунд. Никаких конфигураций. AI-агент подключён.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
Supabase работает над Multigres — решением для шардинга PostgreSQL, которое позволит масштабировать базу данных до петабайтного уровня
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯5👍2
CREATE STATISTICS
позволяет взять взаимосвязанные данные в ваших таблицах и объяснить Postgres, как именно они связаны.Например, можно создать статистику для связки country и city следующим образом:
CREATE STATISTICS (dependencies) ON country, city FROM facilities;
ANALYZE facilities;
В нашей тестовой базе данных это сделало один запрос с фильтрацией по WHERE city быстрее в 97 раз
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍3
Объединение таблиц в схемы
Таблица представляет собой набор строк и столбцов и описывает определённый объект, например список клиентов, товаров или счетов-фактур. Чтобы работать с несколькими связанными объектами, используют группы таблиц, объединённые в логическую схему. Логическая схема — это структура, связывающая таблицы между собой.
Кроме логической, у базы данных есть и физическая схема. Она определяет, как данные и связанные с ними компоненты (например, индексы) размещаются на диске. Когда речь идёт о «схеме базы данных», обычно имеется в виду логическая схема, а не физическая.
Если в одной системе работают несколько проектов, для каждого проекта можно создать свою схему. Таблицы, относящиеся к одному проекту, размещаются в одной схеме, таблицы других проектов — в других. Это помогает избежать путаницы между одноимёнными таблицами.
Чтобы таблицы из одного проекта случайно не использовались в другом, схемам дают имена. Так, таблицы
👉 @SQLPortal
Таблица представляет собой набор строк и столбцов и описывает определённый объект, например список клиентов, товаров или счетов-фактур. Чтобы работать с несколькими связанными объектами, используют группы таблиц, объединённые в логическую схему. Логическая схема — это структура, связывающая таблицы между собой.
Кроме логической, у базы данных есть и физическая схема. Она определяет, как данные и связанные с ними компоненты (например, индексы) размещаются на диске. Когда речь идёт о «схеме базы данных», обычно имеется в виду логическая схема, а не физическая.
Если в одной системе работают несколько проектов, для каждого проекта можно создать свою схему. Таблицы, относящиеся к одному проекту, размещаются в одной схеме, таблицы других проектов — в других. Это помогает избежать путаницы между одноимёнными таблицами.
Чтобы таблицы из одного проекта случайно не использовались в другом, схемам дают имена. Так, таблицы
CUSTOMER
или PRODUCT
могут встречаться в разных проектах. Чтобы отличать их, при обращении к таблице желательно указывать имя схемы, например: SCHEMA_NAME.TABLE_NAME
. Если схема не указана, SQL использует схему по умолчаниюPlease open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4
Совет по Postgres: установите таймаут блокировки.
Часто бывает полезно задать
Если вы устанавливаете
Дополнительный совет — логировать ожидания блокировок немного ниже порога таймаута. Например, если таймаут установлен на 5 секунд, логируйте ожидания от 4.9 секунд. Это поможет фиксировать запросы, которые отменяются, для последующего анализа.
👉 @SQLPortal
Часто бывает полезно задать
lock_timeout
в Postgres, чтобы блокировки в рамках сессии автоматически освобождались через определённое время. Это помогает улучшить производительность запросов и предотвращает удержание блокировок на неопределённый срок. Параметр можно задать через ALTER SYSTEM
или на уровне отдельной сессии.Если вы устанавливаете
lock_timeout
на уровне системы, убедитесь, что ведётся логирование, и вы можете видеть ошибки отменённых операций. Такие запросы не были выполнены и должны быть повторно запущены в сессии без установленного таймаута блокировки.Дополнительный совет — логировать ожидания блокировок немного ниже порога таймаута. Например, если таймаут установлен на 5 секунд, логируйте ожидания от 4.9 секунд. Это поможет фиксировать запросы, которые отменяются, для последующего анализа.
lock_timeout
часто можно задать при инициализации ORM и легко подключить к соединению вашей сессии в приложении.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Подсчеты и общие итоги в Postgres с помощью функций ROLLUP и CUBE:
📖 Читать: ссылка
👉 @SQLPortal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Представление
Для каждой схемы, таблицы и колонки можно увидеть:
> наличие NULL-значений
> n_distinct / кардинальность
→ отрицательные значения — высокая кардинальность
→ положительные значения — низкая кардинальность
> наиболее часто встречающиеся значения
> частоты этих значений
> информацию о гистограмме распределения данных
В представлении
Эти данные полезны для ряда оптимизаций, главное применение — проектирование индексов:
1. Знание кардинальности
Если колонка с низкой кардинальностью — индекс может не помочь, последовательное сканирование может быть быстрее.
Если колонка с высокой кардинальностью и по ней часто выполняются запросы — индекс, скорее всего, будет полезен.
2. Поиск смещенного распределения
Если колонка имеет кардинальность, но распределение сильно смещено — могут быть полезны частичные индексы.
3. Знание частоты NULL-значений
Это может помочь в проектировании запросов и очистке данных.
👉 @SQLPortal
pg_stats
в Postgres — это действительно удобное место для получения информации о распределении данных по таблицам.Для каждой схемы, таблицы и колонки можно увидеть:
> наличие NULL-значений
> n_distinct / кардинальность
→ отрицательные значения — высокая кардинальность
→ положительные значения — низкая кардинальность
> наиболее часто встречающиеся значения
> частоты этих значений
> информацию о гистограмме распределения данных
В представлении
pg_stats
названия колонок указываются как attname (attribute name), поэтому можно легко просматривать статистику по отдельным колонкам таблицы.Эти данные полезны для ряда оптимизаций, главное применение — проектирование индексов:
1. Знание кардинальности
Если колонка с низкой кардинальностью — индекс может не помочь, последовательное сканирование может быть быстрее.
Если колонка с высокой кардинальностью и по ней часто выполняются запросы — индекс, скорее всего, будет полезен.
2. Поиск смещенного распределения
Если колонка имеет кардинальность, но распределение сильно смещено — могут быть полезны частичные индексы.
3. Знание частоты NULL-значений
Это может помочь в проектировании запросов и очистке данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Это визуальная шпаргалка по SQL-командам, оформленная в виде рисунков с фруктами и человечками. Она охватывает основные конструкции SQL на примере таблицы
По моему одна из лучших, что есть🐸
👉 @SQLPortal
fruits
По моему одна из лучших, что есть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3
Postgres предоставляет широкий и надёжный набор функций для отчетности и аналитики. Доступно множество опций для группировки по датам и агрегации (rollup).
Смотри практическое руководство по работе с датами. Примеры можно запускать прямо в браузере, чтобы попробовать разные инструменты.
▶️ playground/postgres-date-functions
👉 @SQLPorta
Смотри практическое руководство по работе с датами. Примеры можно запускать прямо в браузере, чтобы попробовать разные инструменты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1
Мониторинг SQL в реальном времени в Oracle Database позволяет отслеживать прогресс выполнения плана запроса во время его выполнения.
Посмотреть отчёт по конкретному запросу можно с помощью:
Полную информацию смотри в этом руководстве : readme🤵
👉 @SQLPortal
Посмотреть отчёт по конкретному запросу можно с помощью:
SELECT dbms_sql_monitor.report_sql_monitor(sql_id => :sql_id)
Полную информацию смотри в этом руководстве : readme
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Ты обожаешь Postgres и SQL, но начальству нужны отчёты в Excel? К счастью, в Postgres есть простой способ выгрузить данные из SQL-запроса сразу в CSV.
Экспортировать CSV-файл для любого SQL-запроса можно так:
psql уже содержит встроенную утилиту для работы с CSV. Просто укажи параметры подключения, запрос в кавычках — и готово.
– флаг
– добавь
Этот способ не такой гибкий, как
Прямой вывод в CSV избавляет от лишней постобработки. Нам нравится, как psql позволяет быстро и эффективно работать со структурированными данными — для отчётов, аудита и загрузки в таблицы.
👉 @SQLPortal
Экспортировать CSV-файл для любого SQL-запроса можно так:
psql --csv -c 'select * from orders'
psql уже содержит встроенную утилиту для работы с CSV. Просто укажи параметры подключения, запрос в кавычках — и готово.
– флаг
--csv
выводит данные в формате CSV прямо в stdout– добавь
>
, чтобы направить вывод в файл на локальной системеЭтот способ не такой гибкий, как
\copy
, но для простого экспорта результатов запроса — это быстрое и удобное решение.Прямой вывод в CSV избавляет от лишней постобработки. Нам нравится, как psql позволяет быстро и эффективно работать со структурированными данными — для отчётов, аудита и загрузки в таблицы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5
Практикуем SQL
Используя таблицы выше, напиши запрос, который определит продавца с наибольшим количеством клиентов.
👉 @SQLPortal
Используя таблицы выше, напиши запрос, который определит продавца с наибольшим количеством клиентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Инициализация массивов в PL/SQL с помощью циклов FOR внутри конструкторов типов (начиная с версии 21c):
Цикл может проходить по:
Диапазону значений:
Курсору:
👉 @SQLPortal
array_var := array_type( FOR i IN ... => val );
Цикл может проходить по:
Диапазону значений:
FOR i IN min .. max => ...
Курсору:
FOR rws IN (SELECT ...) => ...
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥1
Postgres содержит массу полезной информации в системных каталогах, которая позволяет понять, что происходит внутри базы данных. Также существуют представления, объединяющие данные из системных таблиц для более удобного доступа.
Для тех, кто только начинает работать с Postgres или только осваивает работу с базой данных, важно познакомиться со следующими ключевыми представлениями каталогов — они помогут увидеть, что происходит внутри, выявить проблемы и провести отладку:
👉 @SQLPortal
Для тех, кто только начинает работать с Postgres или только осваивает работу с базой данных, важно познакомиться со следующими ключевыми представлениями каталогов — они помогут увидеть, что происходит внутри, выявить проблемы и провести отладку:
pg_stat_activity
→ текущие выполняющиеся запросы и сессииpg_stat_statements
→ журнал запросов и их длительностьpg_stat_user_indexes
→ пользовательские индексы (не системные), включая первичные ключиpg_roles
→ системные роли и роли для входа в системуpg_locks
→ процессы, удерживающие блокировкиpg_stats
→ статистика по таблицам: распределение данных, кардинальность столбцовpg_settings
→ параметры конфигурации, включая те, что задаются через ALTER SYSTEMpg_stat_database
→ информация о базе данных, например, объем транзакцийPlease open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Индексация в Postgres для запросов с подстановочными символами 🃏
Это немного отличается от стандартной индексации. Если запросы твоего приложения делают точное сравнение — стандартные B-tree индексы обычно работают хорошо.
Но если ты часто используешь
Индексы типа B-tree зависят от сортировки, а наличие подстановочного символа
К счастью, есть расширение
Оператор
Если посмотреть план выполнения (EXPLAIN) для такого индекса, ты увидишь, что используются планы Index Bitmap и Heap Bitmap.
Обычно это работает так: поиск по индексу создает
👉 @SQLPortal
Это немного отличается от стандартной индексации. Если запросы твоего приложения делают точное сравнение — стандартные B-tree индексы обычно работают хорошо.
Но если ты часто используешь
LIKE
или ILIKE
с шаблоном вида %строка%, такие запросы обрабатываются иначе.Индексы типа B-tree зависят от сортировки, а наличие подстановочного символа
%
и в начале, и в конце строки делает такую сортировку невозможной обычными методами.К счастью, есть расширение
pg_trgm
, которое позволяет Postgres искать внутри столбца по триграммам (наборы из 3 символов).pg_trgm
нужно установить явно, но оно поставляется с каждым дистрибутивом Postgres.pg_trgm
работает вместе с GIN-индексами, создавая индекс по триграммам для ускоренного поиска по схожести:CREATE INDEX trgm_idx ON test_trgm USING GIN (t gin_trgm_ops);
Оператор
gin_trgm_ops
— это специальный оператор индексации, который связывает GIN-индекс с триграммами.Если посмотреть план выполнения (EXPLAIN) для такого индекса, ты увидишь, что используются планы Index Bitmap и Heap Bitmap.
Обычно это работает так: поиск по индексу создает
bitmap
(битовую карту), ссылающуюся на строки, подходящие под условие, а затем heap bitmap используется для получения этих строк из основной таблицыPlease open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3