База данных

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

Коротко

Упорядоченное хранилище данных под управлением специальной программы — СУБД, которая позволяет быстро находить, изменять и защищать записи.

Что такое «База данных»

Всё, что сайт «помнит», лежит в базе данных: статьи и товары, пользователи и заказы, настройки темы и плагинов. Файлы картинок обычно хранятся на диске, а в базе — только сведения о них. Работает с данными не сам сайт, а система управления базами данных (СУБД): MySQL, MariaDB, PostgreSQL. Она следит за целостностью, позволяет нескольким посетителям одновременно читать и писать и восстанавливается после сбоев.

Как устроена реляционная база

Большинство сайтов используют реляционные базы. Данные лежат в таблицах: строка — одна запись, столбец — одно поле. Таблицы связаны ключами: в заказе хранится не имя покупателя, а его идентификатор. Запросы к таким базам пишут на языке SQL:

SELECT ID, post_title
FROM wp_posts
WHERE post_type = 'product' AND post_status = 'publish'
ORDER BY post_date DESC
LIMIT 10;

Запрос возвращает десять последних опубликованных товаров магазина на WooCommerce. Для задач, где таблицы неудобны, — кеша, очередей, документов с меняющейся структурой — применяют NoSQL-хранилища вроде Redis или MongoDB.

База данных сайта на CMS

WordPress хранит записи и страницы в wp_posts, их дополнительные поля — в wp_postmeta, настройки — в wp_options. В 1С-Битрикс таблицы начинаются с b_, например элементы инфоблоков лежат в b_iblock_element. Обычно с базой работают через функции CMS, а не прямыми запросами: так сохраняются кеши, события и совместимость с обновлениями. Прямой SQL оправдан для отчётов и массовых операций, но перед ним нужна резервная копия — как её делать, разобрано в статье про резервное копирование сайта.

Что замедляет базу

  • Отсутствие индексов: поиск по неиндексированному полю заставляет СУБД просматривать всю таблицу.
  • Разросшиеся таблицы: тысячи ревизий записей, автозагружаемые опции брошенных плагинов, журналы, которые никто не чистит.
  • Много мелких запросов там, где хватило бы одного, — частая беда самописных циклов в шаблонах.
  • Настройки СУБД по умолчанию на сервере с большим объёмом данных: например, слишком маленький буфер для кеширования таблиц в памяти.

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

Обновлено:

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

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