Коротка відповідь
seniorПлейсхолдери — це параметризовані запити, які розділяють SQL‑логіку від даних. Вони забезпечують захист від SQL‑ін’єкцій, дозволяють кешувати плани запитів і зменшують накладні витрати на парсинг. При підключенні до PostgreSQL, MySQL чи MongoDB використання `?`/`:name` гарантує безпечну передачу значень.
Повне пояснення
Що це і навіщо
Плейсхолдери (параметризовані запити) — це символи у SQL‑запитах, що замінюються фактичними значеннями під час виконання. Вони розділяють синтаксис запиту від даних, що передаються.
Ключові принципи
- Безпека: параметри не інтерпретуються як частина коду, що усуває ризик SQL‑ін’єкцій.
- Кешування: одна й та сама структура запиту з різними параметрами може бути виконана швидше, бо план вже готовий.
- Підтримка типів: драйвери автоматично конвертують JavaScript‑значення у відповідний тип БД.
Як це працює
- Запит формується з плейсхолдерів (
SELECT * FROM users WHERE id = ?). - Драйвер підставляє значення, створюючи виконуваний план.
- БД виконує запит без перегляду структури, що зменшує час парсингу.
Практика й реалізація
- PostgreSQL:
client.query('SELECT * FROM users WHERE id = $1', [userId]). - MySQL:
connection.query('SELECT * FROM users WHERE id = ?', [userId]). - MongoDB (Node.js):
collection.find({ _id: new ObjectId(id) })— тут параметр передається як об’єкт.
Тестування
const { Client } = require('pg');
const client = new Client();
await client.connect();
const res = await client.query('SELECT * FROM users WHERE email = $1', ['test@example.com']);
console.log(res.rows);
await client.end();
Оптимізація запитів
- Використовуйте індекси для полів, що часто фільтруються.
- Перевіряйте
EXPLAINдля складних запитів.
Безпека
Плейсхолдери автоматично екранують спеціальні символи, тому не потрібно вручну обробляти вхідні дані. Це ключовий елемент захисту від SQL‑ін’єкцій.
Особливості в контексті ORM
ORM‑фреймворки (Prisma, TypeORM) генерують параметризовані запити під капотом, тому розуміння плейсхолдерів допомагає дебажити складні запити.
Чому це важливо для співбесід
Кандидат, що розуміє роль плейсхолдерів, демонструє знання про безпеку, продуктивність і правильну архітектуру взаємодії з БД.