Язык запросов

Оригинальное название: query language

Коротко

Специализированный язык, на котором описывают, какие данные нужно найти, отобрать или изменить в базе, документе или через API.

Что такое «Язык запросов»

Языки программирования описывают, как что-то сделать: шаг за шагом. Языки запросов обычно декларативны — описывают, что нужно получить, а способ поиска выбирает сама система. Запрос «все заказы за сентябрь дороже десяти тысяч» не говорит, в каком порядке читать таблицы и какие индексы использовать: это решает планировщик базы. Поэтому один и тот же запрос остаётся быстрым, когда данных становится в сто раз больше, — если правильно настроены индексы.

Основные языки запросов

  • SQL — для реляционных баз: MySQL, MariaDB, PostgreSQL. На нём работают WordPress и 1С-Битрикс.
  • GraphQL — для API: клиент сам перечисляет нужные поля и получает ровно их.
  • XPath и XQuery — для XML-документов, например при разборе выгрузок 1С.
  • Cypher — для графовых баз, где важны связи между объектами.
  • Языки запросов документных NoSQL-баз — например, фильтры MongoDB в формате JSON.

Пример: один вопрос на SQL и GraphQL

-- SQL
SELECT name, price FROM products WHERE id = 42;

query {   # GraphQL
  product(id: 42) { name price }
}

Результат похож, а место работы разное. SQL выполняется внутри базы и видит её таблицы. GraphQL работает на уровне API: схему и связь полей с данными определяет сервер, а клиент лишь выбирает, что ему нужно.

Безопасность: инъекции

Самая известная уязвимость веба — SQL-инъекция: данные пользователя вставляют прямо в текст запроса, и злоумышленник дописывает туда свою команду. Защита — подготовленные запросы с параметрами, где данные передаются отдельно от команды. В WordPress для этого служит $wpdb->prepare(), в PDO — плейсхолдеры ? или именованные параметры. ORM и построители запросов вроде WP_Query или D7 в Битриксе делают это автоматически, пока разработчик не начинает собирать условия склейкой строк.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение