Вы когда-нибудь часами сидели над сложным SQL-запросом, пытаясь понять, почему он выполняется так долго? Или ломали голову над структурой документа в MongoDB, которая должна быть одновременно гибкой и быстрой? Если да — эта подборка для вас.
Я собрал десять практичных промтов, которые помогут вам проектировать схемы, оптимизировать запросы и мигрировать данные между двумя самыми популярными базами данных — PostgreSQL и MongoDB. Эти промты вы можете скопировать и использовать прямо сейчас в любом AI-ассистенте (например, Claude, ChatGPT или специализированном инструменте вроде ASI Biont).
Каждый промт снабжён пояснением, для какой задачи он предназначен, и примером использования. Вы увидите, как AI может стать вашим надёжным помощником в работе с базами данных — от генерации схем до анализа планов выполнения.
1. Генерация схемы PostgreSQL по описанию требований
Для чего: Когда вы начинаете проект с нуля и знаете бизнес-требования, но не хотите тратить время на ручное проектирование таблиц и связей.
Промт:
Спроектируй схему базы данных PostgreSQL для [описание проекта]. Учитывай следующие сущности и их поля: [перечислить]. Определи первичные и внешние ключи, типы данных, ограничения (NOT NULL, UNIQUE, CHECK) и индексы для часто используемых полей. Добавь триггер для автоматического обновления поля updated_at. Выведи SQL-код для создания таблиц с комментариями.
Пример использования:
Спроектируй схему базы данных PostgreSQL для интернет-магазина. Сущности: пользователь (id, имя, email, пароль, дата регистрации), заказ (id, пользователь, дата, статус), товар (id, название, цена, количество на складе). Добавь таблицу order_items для связи многие-ко-многим между заказами и товарами.
AI вернёт полный SQL-скрипт с CREATE TABLE, включая внешние ключи и индексы, что ускорит начальную разработку.
2. Генерация схемы MongoDB на основе требований
Для чего: Когда нужно спроектировать документную модель для MongoDB, учитывая паттерны доступа к данным.
Промт:
Разработай схему коллекций MongoDB для [описание проекта]. Основные сущности: [перечислить]. Для каждой коллекции определи структуру документа, типы полей (используй BSON-типы), укажи, какие поля следует индексировать, и объясни, почему выбрана та или иная структура (встраивание или ссылки). Приведи примеры JSON-документов.
Пример использования:
Разработай схему коллекций MongoDB для блога. Сущности: статья (заголовок, текст, автор, дата, теги), комментарий (текст, автор, дата), автор (имя, email). Учти, что мы часто выводим статью со всеми комментариями.
AI предложит варианты: встроить комментарии в документ статьи или сделать отдельную коллекцию, объяснив плюсы и минусы каждого подхода.
3. Оптимизация медленного SQL-запроса
Для чего: Когда у вас есть рабочий, но медленный запрос, и вы хотите понять, как его ускорить.
Промт:
Вот SQL-запрос для PostgreSQL: [вставьте запрос]. Он выполняется [X] секунд. Проанализируй его, используя EXPLAIN ANALYZE, и предложи оптимизации: добавление индексов, переписывание запроса, изменение структуры таблиц. Объясни, почему каждая оптимизация должна помочь.
Пример использования:
Вот SQL-запрос для PostgreSQL:
SELECT * FROM orders WHERE user_id = 123 AND created_at > NOW() - INTERVAL '30 days';
Он выполняется 2 секунды. Проанализируй и предложи оптимизации.
AI предложит создать составной индекс (user_id, created_at) и объяснит, почему это ускорит фильтрацию. Вы получите не только совет, но и обоснование.
4. Анализ плана выполнения запроса (EXPLAIN ANALYZE)
Для чего: Когда нужно глубоко разобраться, как PostgreSQL выполняет запрос, и найти узкие места.
Промт:
Интерпретируй вывод команды EXPLAIN ANALYZE для PostgreSQL. Вот вывод: [вставьте вывод]. Объясни, что означает каждая операция (Seq Scan, Index Scan, Hash Join и т.д.), какие узлы являются наиболее затратными, и что можно улучшить. Дай конкретные рекомендации по оптимизации.
Пример использования:
Интерпретируй вывод EXPLAIN ANALYZE:
Seq Scan on orders (cost=0.00..1000.00 rows=5000 width=100) (actual time=0.01..10.00 rows=5000 loops=1)
Filter: (user_id = 123)
Rows Removed by Filter: 50000
Planning Time: 0.05 ms
Execution Time: 12.00 ms
AI объяснит, что Seq Scan — это последовательное сканирование всей таблицы, и порекомендует индекс. Это поможет вам понять, как читать планы выполнения.
5. Оптимизация запросов в MongoDB
Для чего: Когда нужно ускорить запросы к MongoDB, используя правильные индексы и структуру.
Промт:
У меня есть коллекция MongoDB [название] с документами вида [пример документа]. Мой запрос [вставьте запрос] выполняется медленно. Используя explain("executionStats"), проанализируй, какие индексы нужно создать, и предложи альтернативные способы написания запроса. Объясни, что такое winningPlan и как его интерпретировать.
Пример использования:
У меня есть коллекция MongoDB "orders" с документами вида {user_id: ObjectId, total: 100, created_at: ISODate}. Мой запрос db.orders.find({user_id: ObjectId("..."), created_at: {$gte: ISODate("2025-01-01")}}) выполняется медленно. Проанализируй и предложи индексы.
AI порекомендует создать составной индекс {user_id: 1, created_at: -1} и объяснит, почему порядок полей важен.
6. Миграция данных из PostgreSQL в MongoDB
Для чего: При переходе с реляционной на документную БД, когда нужно перенести данные и адаптировать схему.
Промт:
Помоги спланировать миграцию данных из PostgreSQL в MongoDB. У меня есть таблицы: [перечислить структуру таблиц]. Нужно перенести данные в коллекции MongoDB с учётом встраивания связанных сущностей. Напиши скрипт на Python (используя psycopg2 и pymongo), который читает данные из PostgreSQL и вставляет в MongoDB. Учти преобразование типов: даты, ObjectId, вложенные документы. Также дай рекомендации по валидации данных после миграции.
Пример использования:
Помоги спланировать миграцию из PostgreSQL в MongoDB. Таблицы:
users (id, name, email)
orders (id, user_id, total, created_at)
Нужно в MongoDB создать коллекцию users с встроенными массивами orders для каждого пользователя.
AI предложит скрипт, который группирует заказы по пользователям и создаёт документы с вложенными заказами.
7. Миграция из MongoDB в PostgreSQL
Для чего: Когда нужно перейти с документной на реляционную модель, например, для соблюдения требований к целостности данных.
Промт:
Спланируй миграцию данных из MongoDB в PostgreSQL. У меня есть коллекции: [описание структуры]. Нужно создать таблицы в PostgreSQL и написать скрипт на Python для переноса данных. Учти нормализацию: разбей встроенные документы на отдельные таблицы, определи внешние ключи. Напиши SQL для создания таблиц и Python-скрипт для миграции.
Пример использования:
Коллекция users содержит документы: {_id: ObjectId, name: "Иван", orders: [{id: 1, total: 100}, {id: 2, total: 200}]}.
Нужно перенести в таблицы users и orders.
AI создаст SQL-скрипт с таблицами и скрипт на Python, который разворачивает вложенные документы.
8. Сравнение производительности PostgreSQL и MongoDB
Для чего: Когда нужно выбрать БД для нового проекта или решить, стоит ли мигрировать.
Промт:
Сравни производительность PostgreSQL и MongoDB для сценария [описание сценария]. Рассмотри факторы: модель данных, типичные запросы, масштабирование, индексация, транзакции. Дай рекомендации, какую БД выбрать и почему. Приведи примеры из реальной практики.
Пример использования:
Сравни производительность PostgreSQL и MongoDB для сценария: интернет-магазин с миллионами товаров и заказов, частые запросы на чтение по категориям и фильтрам.
AI объяснит, что PostgreSQL лучше подходит для сложных транзакций, а MongoDB — для гибких схем и горизонтального масштабирования, и даст конкретные рекомендации.
9. Генерация тестовых данных для БД
Для чего: Когда нужно заполнить базу тестовыми данными для разработки или нагрузочного тестирования.
Промт:
Сгенерируй SQL-скрипт для заполнения таблиц PostgreSQL тестовыми данными. Таблицы: [описание структуры]. Создай [N] записей в каждой таблице с реалистичными данными (имена, email, даты, цены). Используй generate_series и random(). Для MongoDB напиши скрипт на Python с использованием Faker.
Пример использования:
Сгенерируй 1000 записей для таблицы users (id, name, email, created_at) с реалистичными данными.
AI предоставит SQL с INSERT ... SELECT ... FROM generate_series и Python-скрипт с Faker для MongoDB.
10. Объяснение разницы между SQL и NoSQL для новичка
Для чего: Когда нужно быстро объяснить команде или заказчику, чем отличаются реляционные и документные базы данных.
Промт:
Объясни простыми словами, в чём разница между SQL и NoSQL базами данных, используя аналогии. Начни с определения, затем сравни по следующим критериям: структура данных, масштабируемость, транзакции, гибкость схемы. Приведи примеры, когда лучше использовать PostgreSQL, а когда MongoDB.
Пример использования:
Объясни разницу между SQL и NoSQL для менеджера проекта, который не знаком с базами данных.
AI даст понятное объяснение с аналогиями (например, SQL — строгая таблица Excel, NoSQL — папка с файлами разных форматов).
11. Проектирование гибридной архитектуры (PostgreSQL + MongoDB)
Для чего: Когда нужно использовать сильные стороны обеих БД в одном проекте.
Промт:
Предложи архитектуру, где PostgreSQL используется для хранения основных бизнес-данных (транзакции, пользователи), а MongoDB — для хранения каталога товаров или логов. Опиши, как организовать синхронизацию между ними (например, через событийную шину). Дай примеры кода для записи и чтения данных из обеих БД в одном приложении.
Пример использования:
Предложи гибридную архитектуру для интернет-магазина: PostgreSQL для заказов, MongoDB для каталога товаров с большим количеством атрибутов.
AI опишет подход, когда каталог товаров хранится в MongoDB для гибкости, а заказы в PostgreSQL для надёжности транзакций, и предложит способы синхронизации.
12. Оптимизация схемы PostgreSQL с помощью индексов
Для чего: Когда нужно проанализировать текущую схему и добавить недостающие индексы для ускорения запросов.
Промт:
Проанализируй следующую схему PostgreSQL: [вставьте CREATE TABLE]. На основе типовых запросов [перечислите запросы] предложи, какие индексы стоит создать, а какие, возможно, лишние. Учитывай композитные индексы и покрывающие индексы. Выведи SQL-код для создания индексов.
Пример использования:
Схема: CREATE TABLE orders (id serial PRIMARY KEY, user_id int, created_at timestamp, total numeric);
Типовые запросы: SELECT * FROM orders WHERE user_id = 123 AND created_at > NOW() - interval '1 day';
AI предложит индекс (user_id, created_at DESC) и объяснит, почему он ускорит этот запрос.
13. Использование транзакций в MongoDB (сравнение с PostgreSQL)
Для чего: Когда нужно понять, как реализовать атомарные операции в MongoDB и чем они отличаются от транзакций в PostgreSQL.
Промт:
Объясни, как работают транзакции в MongoDB (начиная с версии 4.0). Приведи пример многослойной транзакции с использованием session. Сравни с транзакциями в PostgreSQL (ACID). Дай рекомендации, когда использовать транзакции в MongoDB, а когда лучше выбрать PostgreSQL.
Пример использования:
Покажи, как провести транзакцию по переводу средств между двумя счетами в MongoDB.
AI предоставит код на Python с with client.start_session() as session:, покажет, как выполнить несколько операций атомарно, и сравнит с PostgreSQL.
14. Проектирование схемы для временных рядов (time-series)
Для чего: Когда нужно хранить и анализировать данные временных рядов (метрики, логи) в PostgreSQL или MongoDB.
Промт:
Предложи схему для хранения временных рядов (например, метрик сервера) в PostgreSQL и MongoDB. Учитывай, что данные поступают каждую секунду, нужно хранить за год. Для PostgreSQL предложи партиционирование по времени, для MongoDB — коллекцию с TTL-индексом. Дай примеры запросов для агрегации по минутам/часам.
Пример использования:
Предложи схему для хранения метрик CPU и RAM каждые 5 секунд.
AI предложит партиционирование по дням в PostgreSQL и использование $group в MongoDB для агрегации.
15. Генерация документации по схеме БД
Для чего: Когда нужно быстро создать документацию по существующей схеме базы данных для команды или заказчика.
Промт:
Сгенерируй документацию по схеме базы данных PostgreSQL/MongoDB. Вот описание схемы: [вставьте DDL или структуру коллекций]. Опиши каждую таблицу/коллекцию, поля, типы данных, индексы, связи. Добавь ER-диаграмму в текстовом виде (используя mermaid).
Пример использования:
Сгенерируй документацию по схеме: CREATE TABLE users (id serial PRIMARY KEY, name text NOT NULL); CREATE TABLE orders (id serial PRIMARY KEY, user_id int REFERENCES users(id), total numeric);
AI создаст Markdown-документ с описанием и mermaid-диаграммой, которую можно вставить в README.
Заключение
Эти десять промтов — лишь малая часть того, что можно делать с помощью AI при работе с базами данных. Главное — понимать, что промты не заменяют знания, а усиливают их. Используйте их как отправную точку, всегда проверяйте результаты и адаптируйте под свою задачу.
Попробуйте применить один из промтов уже сегодня — и вы увидите, как ускорится ваша работа с PostgreSQL и MongoDB. А если у вас есть свои любимые промты для работы с БД— поделитесь в комментариях!
Комментарии