Зачем веб-приложению база данных
Список Python в памяти хранит данные только до перезапуска процесса — а рано или поздно процесс перезапускается.
Список задач в разделе 22.5 хранится вот так:
zadachi = ["Выучить основы Python", "Собрать сайт на Flask"]
Это обычная переменная Python — список, который живёт в оперативной памяти, пока работает процесс приложения. У такого хранения есть ограничения, которые незаметны на маленьком примере, но становятся серьёзной проблемой по мере роста приложения и нагрузки на него.
| Проблема | Что происходит |
|---|---|
| Перезапуск | Остановили процесс Python (обновили код, перезагрузили сервер) — список исчез вместе с ним |
| Несколько процессов | Рабочее развёртывание (раздел 22.34) часто запускает несколько процессов приложения одновременно — у каждого своя копия памяти, свой список, они не видят изменений друг друга |
| Запрос данных | Список умеет перебор и фильтрацию средствами Python, но не умеет быстро находить нужные записи среди миллионов без полного перебора |
| Согласованность при одновременных изменениях | Два запроса, пришедшие почти одновременно, могут непредсказуемо испортить список, если оба меняют его в один и тот же момент |
СУБД (система управления базами данных) — программная система, создающая, хранящая, обрабатывающая запросы и управляющая базами данных; база данных — это организованные хранимые данные, с которыми работает СУБД. СУБД предоставляет механизмы постоянного хранения, запросов, транзакций, ограничений и согласованной работы с данными — она решает именно эти проблемы. Конкретные гарантии при этом зависят от выбранной СУБД, спроектированной схемы, использования транзакций и кода самого приложения: СУБД не устраняет проблему автоматически сама по себе, если ей не пользоваться правильно.
Разделы 22.21-22.28 разбирают, как устроены базы данных и на каком языке с ними работают, а раздел 22.29 заменяет список Python в проекте главы на базу данных SQLite.