Ответ
В Node.js-проектах я активно использовал PostgreSQL, преимущественно с драйвером pg (node-postgres) и ORM Sequelize. Основные задачи включали проектирование схемы, оптимизацию запросов и обеспечение целостности данных.
Пример подключения и запроса с pg:
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: { rejectUnauthorized: false }
});
async function getActiveUsers() {
const query = 'SELECT id, email FROM users WHERE is_active = $1 AND created_at > $2';
const values = [true, new Date('2023-01-01')];
const { rows } = await pool.query(query, values);
return rows;
}
Ключевые практики в моем опыте:
- Транзакции: Использование
BEGIN,COMMIT,ROLLBACKчерезpool.queryдля атомарности операций, например, при регистрации пользователя с созданием связанных записей в нескольких таблицах. - JSONB: Хранение динамических конфигураций или метаданных в полях типа
JSONBс использованием индексов GIN для эффективного поиска. - Connection Pooling: Настройка пула соединений в
pgдля управления нагрузкой и избежания переподключений. - Сложные запросы: Часто применял CTE (Common Table Expressions) для читаемых многоступенчатых запросов и оконные функции для аналитики (например,
ROW_NUMBER(),LAG()). - Миграции: Использовал инструменты вроде
node-pg-migrateили миграции в Sequelize для контроля версий схемы БД.
Видео-ответы
▶
▶
▶
▶
▶