Что такое база данных и как она работает
Основы4 минРедакция Innovialabs
Коротко
База данных — это упорядоченное хранилище информации, а СУБД — программа, которая сохраняет эти данные на диск, быстро находит нужное по запросу и не даёт данным испортиться при одновременной работе многих пользователей.
Коротко: что такое база данных
База данных — это организованный набор информации, который хранится так, чтобы его было легко находить, изменять и защищать. Список клиентов, каталог товаров, история заказов — всё это данные, и почти любое приложение держит их в базе.
Важно различать два понятия:
- База данных — сами данные и их структура.
- СУБД (система управления базами данных) — программа, которая с этими данными работает: PostgreSQL, MySQL, MongoDB, Redis и другие.
Приложение не читает файлы на диске напрямую. Оно отправляет СУБД запрос — «найди все заказы клиента за май» — и получает готовый ответ.
Почему не обычная таблица Excel
Пока данных мало и с ними работает один человек, Excel справляется. Проблемы начинаются, когда:
- одновременно сотни пользователей оформляют заказы и меняют остатки;
- записей становятся миллионы, а ответ нужен за доли секунды;
- нельзя допустить, чтобы оплата списалась, а заказ не создался;
- нужно разграничить доступ: менеджер видит свои сделки, бухгалтер — счета.
СУБД решает именно эти задачи: одновременный доступ, скорость поиска, целостность и права доступа.
Таблицы, строки и столбцы
Самый распространённый тип баз — реляционные. Данные в них лежат в таблицах, похожих на листы Excel, но со строгими правилами.
Возьмём интернет-магазин:
| id | name | city | |
|---|---|---|---|
| 1 | Алия | aliya@example.com | Ташкент |
| 2 | Бобур | bobur@example.com | Самарканд |
- Таблица (
customers) описывает один тип объектов — клиентов. - Строка (запись) — один конкретный клиент.
- Столбец (поле) — одно свойство: имя, email, город. У каждого столбца есть тип: число, текст, дата.
- Первичный ключ (
id) — уникальный номер строки, по которому её можно однозначно найти.
Заказы хранятся в отдельной таблице orders, и в каждом заказе есть поле customer_id — ссылка на клиента. Это связь между таблицами. Поэтому данные клиента записаны один раз, а не копируются в каждый заказ.
В CRM логика та же: таблицы contacts, deals, tasks, связанные между собой ключами.
Как работает запрос
Для реляционных баз запросы пишут на языке SQL:
SELECT name, email
FROM customers
WHERE city = 'Ташкент';
Что происходит внутри:
- СУБД разбирает запрос и проверяет, что таблица и столбцы существуют.
- Планировщик выбирает самый быстрый способ выполнения: прочитать всю таблицу или воспользоваться индексом.
- Данные читаются из памяти или с диска, фильтруются и возвращаются приложению.
Индекс работает как алфавитный указатель в книге: вместо перебора всех строк СУБД сразу находит нужные. Без индексов большие таблицы начинают «тормозить».
Как данные хранятся и не теряются
- Данные лежат в файлах на диске, а часто используемые части кэшируются в оперативной памяти.
- Изменения сначала записываются в журнал (WAL), поэтому после сбоя питания база восстанавливается.
- Транзакция объединяет несколько действий в одно: «списать деньги и создать заказ» выполнится целиком или не выполнится вовсе.
- Резервные копии и репликация (копия базы на другом сервере) защищают от потери диска или сервера.
Основные семейства баз данных
| Семейство | Как хранит данные | Примеры | Когда подходит |
|---|---|---|---|
| Реляционные (SQL) | Таблицы со связями | PostgreSQL, MySQL | Заказы, платежи, CRM, большинство бизнес-систем |
| Документные | JSON-подобные документы | MongoDB | Гибкая структура, каталоги, контент |
| Ключ-значение | Пары «ключ → значение» | Redis | Кэш, сессии, очереди |
| Колоночные | Данные по столбцам | ClickHouse | Аналитика по большим объёмам |
| Графовые | Узлы и связи | Neo4j | Соцсети, рекомендации |
| Поисковые | Инвертированный индекс | Elasticsearch | Полнотекстовый поиск |
Большинство проектов начинают с одной реляционной базы и добавляют другие, только когда появляется конкретная задача — например, Redis для кэша.
Частые ошибки новичков
- Хранить всё в одной огромной таблице с повторяющимися данными.
- Не задавать типы и ограничения — потом в поле «дата» оказывается текст.
- Не настраивать резервные копии до первой потери данных.
- Выбирать модную базу вместо той, что подходит под задачу.