Как выбираешь СУБД для нового проекта на Node.js?

«Как выбираешь СУБД для нового проекта на Node.js?» — вопрос из категории Архитектура, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При выборе СУБД для Node.js-проекта я оцениваю несколько ключевых факторов:

Основные критерии:

  1. Структура данных — реляционные (PostgreSQL, MySQL) для сложных связей, NoSQL (MongoDB) для гибких схем
  2. Производительность — Redis для кэширования и очередей, PostgreSQL для ACID-транзакций
  3. Экосистема Node.js — качество драйверов (pg, mongoose, ioredis)
  4. Масштабируемость — горизонтальное для MongoDB, вертикальное/репликация для PostgreSQL

Пример для PostgreSQL с драйвером pg:

const { Pool } = require('pg');
const pool = new Pool({
  host: 'localhost',
  database: 'myapp',
  user: 'user',
  password: 'password',
  max: 20 // максимальное количество соединений
});

// Использование с async/await
async function getActiveUsers() {
  const { rows } = await pool.query(
    'SELECT * FROM users WHERE active = $1',
    [true]
  );
  return rows;
}

Для MongoDB с Mongoose:

const mongoose = require('mongoose');
await mongoose.connect('mongodb://localhost:27017/myapp');

const userSchema = new mongoose.Schema({
  email: { type: String, unique: true },
  profile: { type: Map, of: String } // гибкая схема
});
const User = mongoose.model('User', userSchema);

В моих последних проектах я использовал PostgreSQL для основного хранилища с JSONB-полями для гибкости и Redis для кэширования сессий.