На какие основные категории делятся системы управления базами данных (СУБД)? Приведите примеры.

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

Ответ

СУБД делятся на несколько категорий по модели данных.

1. Реляционные (SQL) СУБД Хранят данные в таблицах со строгой схемой и связями. Используют язык SQL для запросов. Гарантируют ACID-свойства транзакций.

  • MySQL / MariaDB – популярные open-source СУБД, часто используются в веб-разработке.
  • PostgreSQL – расширяемая СУБД с поддержкой сложных типов данных (JSON, GIS), строгими стандартами SQL.
  • Oracle Database, Microsoft SQL Server – мощные коммерческие решения для enterprise.

2. NoSQL СУБД Используются для нереляционных данных, часто предлагают горизонтальную масштабируемость и гибкие схемы.

  • Документные (MongoDB, Couchbase) – хранят данные в виде документов (JSON/BSON).
  • Ключ-значение (Redis, DynamoDB) – оптимизированы для быстрого доступа по ключу. Redis работает в памяти.
  • Колоночные (Cassandra, HBase) – эффективны для аналитики и больших объемов данных, хранят данные по столбцам.
  • Графовые (Neo4j) – хранят данные как узлы и связи, идеальны для анализа взаимосвязей.

Почему выбор важен: Реляционные БД подходят для сложных запросов и транзакций, NoSQL – для масштабирования, гибкости схемы или специфичных моделей данных (документы, графы).

Пример подключения (JDBC для MySQL):

// Устаревший, но наглядный пример прямого JDBC
Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/mydb?useSSL=false",
    "user",
    "password"
);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
stmt.setInt(1, userId);
ResultSet rs = stmt.executeQuery();

Современный подход: Используйте Spring Data JPA (для SQL) или Spring Data MongoDB для абстракции над низкоуровневыми операциями.