Что такое база данных и зачем она нужна

Почти любое приложение хранит что-то надолго: пользователей, заказы, сообщения. Первая мысль — держать их в знакомом Python-списке. Посмотрим, где эта идея ломается.

Почему не хранить данные в Python-списке

Python 3.13
users = [
    {"id": 1, "name": "Анна", "email": "anna@example.com"},
    {"id": 2, "name": "Пётр", "email": "petr@example.com"},
    # ... представьте здесь миллион пользователей
]

def find_user_by_email(email):
    for user in users:   # перебираем весь список
        if user["email"] == email:
            return user
    return None

Пока пользователей тысяча, всё работает. Дальше начинаются проблемы:

  • Медленный поиск — запрос «найди по email» перебирает записи одну за другой, и на миллионе это уже ощутимая задержка.
  • Всё в оперативной памяти — данные должны целиком в неё помещаться.
  • Данные живут до перезапуска — программа завершилась, и список исчез.
  • Одновременный доступ — двое меняют данные в один момент, и список к этому не готов.

Что такое база данных

Эти проблемы и решает база данных: быстрый поиск по нужному полю, хранение на диске между запусками и одновременный доступ без путаницы.

Простая аналогия: база данных — умный склад. У каждой «полки» свой адрес, а «складской робот» (СУБД) быстро находит и выдаёт нужное.

Основные типы баз данных

Видов баз данных много, но на практике постоянно встречаются три:

Реляционные
id
name
1
Anna
2
Boris
Данные в связанных таблицах — строки и столбцы
Key-value
user:1Anna
user:2Boris
Быстрый доступ к значению по ключу
Документоориентированные
{
"name": "Anna",
"role": "admin"
}
Гибкие документы в формате JSON

Самые распространённые СУБД

Реляционные БД — то, с чем вы столкнётесь чаще всего: PostgreSQL и MySQL на серверах, SQLite — внутри телефонов, браузеров и самого Python. Из остальных регулярно попадаются Redis (ключ-значение: кэш и сессии) и MongoDB (документы).

Следующие три главы — про реляционные БД, поэтому дальше говорим только о них.

Проверка понимания

Почему для хранения пользователей приложения выбирают базу данных, а не обычный список в памяти?

В следующей статье начнём практику с SQLite — идеальной для обучения базой данных, которая уже встроена в Python: создадим первую БД и поработаем с настоящими данными.