Природа данных: почему Excel не всегда достаточно
Природа данных: почему Excel не всегда достаточно
Представьте, что вы открыли небольшой интернет-магазин. В первый месяц у вас 10 заказов в день. Вы заносите их в обычную таблицу Excel: имя клиента, телефон, товар, сумма. Все наглядно, удобно, можно быстро раскрасить ячейки с должниками в красный цвет.
Но прошел год. В Черную пятницу на сайт падает 5 000 заказов. Пять менеджеров одновременно пытаются обновить статусы доставок. Таблица зависает, выдает ошибку «Файл заблокирован другим пользователем», а курьер увозит заказ по несуществующему адресу, потому что кто-то случайно удалил цифру из номера дома.
Этот момент — классическая точка роста. Инструмент, который идеально подходил для старта, превратился в узкое горлышко. Чтобы понять, зачем миру понадобились базы данных (и такие системы, как PostgreSQL или MySQL), нужно разобраться, где именно заканчиваются возможности обычных электронных таблиц.
Когда таблица начинает «трещать по швам»
Excel, Google Sheets и Apple Numbers — это гениальные инструменты. Их главная сила в гибкости: вы можете в любой момент добавить новый столбец, написать формулу сбоку от данных или вставить график прямо поверх ячеек. Но эта же гибкость становится фатальной, когда данные превращаются в фундамент бизнеса.
Существуют три фундаментальные проблемы, с которыми сталкивается любая растущая таблица:
- Многопользовательская работа (Конкурентность) Файл таблицы — это документ. Если два человека одновременно попытаются изменить одну и ту же строку, система либо заблокирует файл для одного из них, либо создаст конфликт версий. В современных приложениях (например, при бронировании билетов на самолет) сотни людей обращаются к одним и тем же данным в одну и ту же секунду.
- Объем и скорость Excel имеет жесткий физический лимит — чуть больше 1 миллиона строк на листе. Но на практике таблица начинает мучительно долго открываться и зависать при фильтрации уже на сотнях тысяч строк. Для банковских транзакций или логов поведения пользователей на сайте миллион строк — это объем данных за пару часов.
- Целостность данных (Защита от «дурака») В колонку «Дата рождения» в Excel можно случайно вписать слово «Завтра» или вставить картинку. Можно написать город как «Москва», «москва», «Мск» или «Масква». Для человека это одно и то же, но для компьютера — четыре разных города. Свести точный отчет по таким данным становится невозможно.
База данных: от документа к сервису
Чтобы решить эти проблемы, инженеры придумали базы данных (БД).
Главный сдвиг в мышлении, который нужно сделать при переходе от Excel к базам данных: база данных — это не файл, который вы открываете двойным кликом. Это непрерывно работающий сервис (программа), с которым вы общаетесь.
Здесь нам нужно разделить два понятия, которые часто путают:
- База данных (БД) — это сами данные, организованные по строгим правилам.
- СУБД (Система управления базами данных) — это программа-посредник, которая эти данные хранит, защищает и выдает по вашему запросу.
PostgreSQL, MySQL, Oracle, SQLite — всё это названия конкретных СУБД. Они как разные марки двигателей: устроены немного по-разному, но выполняют одну задачу — надежно управляют вашими данными.
Когда менеджер нажимает кнопку «Оплачено» в интерфейсе магазина, программа отправляет в СУБД строгую команду. СУБД сама решает, как безопасно записать это изменение на жесткий диск, даже если в эту же долю секунды другой менеджер тоже пытается изменить этот заказ.
Реляционные базы данных: знакомые таблицы, строгие правила
Существуют разные типы баз данных, но стандартом де-факто в мире бизнеса являются реляционные базы данных (от английского relation — отношение, что в математике баз данных означает двумерную таблицу). И PostgreSQL, и MySQL относятся именно к этому типу.
Хорошая новость: внутри реляционной базы данных информация хранится в виде таблиц, которые концептуально очень похожи на листы Excel.
Однако терминология и правила игры меняются:
| Понятие в Excel | Понятие в БД | В чем фундаментальная разница? |
|---|---|---|
| Лист | Таблица | В БД таблица хранит только сущности одного типа (например, только «Клиенты» или только «Заказы»). Нельзя сбоку приписать заметки или нарисовать график. |
| Строка | Запись (Record) | Каждая строка — это один конкретный объект (один клиент). В БД нельзя пропустить строку для красоты или сделать пустой отступ. |
| Столбец | Поле (Field) | Каждое поле имеет строгий тип данных. Если поле названо «Цена» и настроено как число, СУБД выдаст ошибку и откажется сохранять туда текст «дорого». |
Реляционная база данных жертвует визуальной свободой Excel ради абсолютной предсказуемости. Вы не можете раскрасить ячейку в желтый цвет, чтобы пометить важного клиента. Вместо этого вы создаете специальное поле is_important и ставите там логическое значение «да» или «нет».
Такая строгость гарантирует, что даже если в базе накопятся десятки миллионов записей, программа сможет мгновенно найти всех важных клиентов, не спотыкаясь об опечатки и пустые ячейки.
Мы выяснили, почему для надежного хранения данных нужна специализированная система. В следующей главе мы возьмем лупу и детально разберем анатомию реляционной таблицы: как именно столбцы и строки превращают хаос информации в идеальный порядок.