← Назад к вопросам

Для чего используются СУБД?

1.0 Junior🔥 111 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

СУБД (Система управления базами данных)

Что такое СУБД?

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

Основные функции СУБД

1. Хранение данных

  • Сохранение информации на диск в структурированном виде
  • Гарантия, что данные не потеряются при отключении питания
  • Пример: когда вы сохраняете профиль в приложении, он идет в СУБД

2. Безопасность

  • Аутентификация: только авторизованные пользователи могут получить доступ
  • Шифрование чувствительных данных
  • Логирование всех операций (кто, когда и что изменил)

3. Согласованность данных

  • ACID свойства обеспечивают целостность
  • Атомарность: операция либо полностью выполнена, либо откачена
  • Пример: при переводе денег со счета на счет, либо оба счета обновлены, либо ничего

4. Быстрый доступ

  • Индексы помогают находить данные за миллисекунды
  • Без индексов придется сканировать миллионы записей
  • Пример: вы ищете пользователя по email — СУБД использует индекс и находит за 0.5ms

5. Масштабируемость

  • Поддержка миллиардов записей
  • Репликация для отказоустойчивости
  • Распределение нагрузки между серверами

Типы СУБД

Реляционные СУБД (Relational Database)

Данные хранятся в таблицах с строками и столбцами.

Примеры:

  • PostgreSQL (open source, мощная, бесплатная)
  • MySQL (популярная, простая, бесплатная)
  • Oracle Database (коммерческая, очень мощная)
  • Microsoft SQL Server (коммерческая, интегрирована с Windows)

Пример таблицы:

users table:
id | name    | email          | age
1  | John    | john@mail.com  | 30
2  | Jane    | jane@mail.com  | 28

NoSQL СУБД (Non-relational)

Данные хранятся в других форматах: документы, графы, ключ-значение.

Примеры:

  • MongoDB (документы в формате JSON)
  • Redis (быстрое хранилище ключ-значение для кеша)
  • Elasticsearch (поиск по большим объемам текста)
  • Neo4j (граф для социальных сетей)

Облачные СУБД

  • Firebase (от Google, для мобильных приложений)
  • AWS RDS (управляемая PostgreSQL/MySQL)
  • Azure Cosmos DB (глобально распределенная)

Для чего QA тестирует СУБД?

1. Корректность данных

Проверяю, что:

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

Пример: создам пользователя с name=John, проверю базу — там точно name=John?

2. Целостность данных

Тестирую ACID свойства:

  • Атомарность: операция либо полностью выполнена, либо откачена
  • Изоляция: две одновременные операции не мешают друг другу
  • Готовность: данные всегда в консистентном состоянии

Пример: два пользователя одновременно переводят деньги со счета. СУБД должна гарантировать, что операции не перемешаются.

3. Производительность

Проверяю, что:

  • Запросы выполняются быстро (< 100ms для обычных операций)
  • Система масштабируется при растущем количестве данных
  • Индексы работают эффективно

Пример: есть таблица с 1 млн записей. Запрос по индексированному полю должен вернуться за 1-5ms, а не 5 секунд.

4. Отказоустойчивость

Тестирую сценарии:

  • Что происходит при отключении основного сервера?
  • Может ли реплика автоматически взять на себя нагрузку?
  • Восстанавливаются ли данные после сбоя?

5. Безопасность

Проверяю:

  • SQL injection: могу ли я вставить вредоносный SQL код?
  • Доступ: может ли пользователь А видеть данные пользователя B?
  • Шифрование: передаются ли чувствительные данные в открытом виде?

Пример SQL injection: если я введу email = admin' --', система должна обработать это безопасно, а не выполнить комментарий.

Инструменты для тестирования СУБД

Для PostgreSQL/MySQL:

  • psql / mysql CLI — прямой доступ к БД
  • DBeaver / DataGrip — визуальный клиент
  • pgAdmin / phpMyAdmin — веб-интерфейс

Для проверки:

  • Запрос SELECT для проверки данных
  • Explain план для анализа производительности
  • Логи СУБД для отладки

Примеры команд:

SELECT * FROM users WHERE id = 1;
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 100;
DELETE FROM users WHERE id = 1;

Типичные проблемы при тестировании

Проблема 1: Race condition

Два запроса одновременно обновляют одну запись. Какой результат победит?

Решение: использовать транзакции и уровни изоляции.

Проблема 2: N+1 queries

Для каждого пользователя из списка я делаю отдельный запрос адреса. Для 1000 пользователей — 1000 запросов.

Решение: JOIN или батчинг запросов.

Проблема 3: Медленные запросы

Запрос выполняется 10 секунд вместо 100ms.

Решение: добавить индекс, переписать запрос, кешировать результаты.

Проблема 4: Утечка данных

Пользователь видит данные других пользователей из БД.

Решение: правильная фильтрация в WHERE clause, ограничение прав доступа.

Примеры из практики

Проект: платежная система

  • Проверяю, что при двойном нажатии кнопки Оплатить платеж не счисляется дважды
  • Это достигается за счет уникального constraint в БД
  • Тестирую simultaneity: отправляю два запроса в одну миллисекунду

Проект: CRM система

  • Находу query, который выполнялся 15 секунд
  • Анализирую EXPLAIN план, вижу что сканирует 2млн записей без индекса
  • Рекомендую добавить индекс на поле status
  • После этого запрос выполняется 50ms

Заключение

Для QA СУБД — это не просто хранилище данных, это критический компонент, который:

  • Гарантирует корректность информации
  • Обеспечивает безопасность
  • Влияет на производительность всей системы

Поэтому тестирование БД — это обязательная часть работы QA инженера, особенно для критичных операций типа платежей, персональных данных и финансов.

Для чего используются СУБД? | PrepBro