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

«Что такое Embedded база данных?» — вопрос из категории Hibernate, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Embedded (встраиваемая) база данных — это СУБД, которая работает как библиотека внутри процесса приложения, а не как отдельный серверный процесс. Она хранит данные в локальных файлах или в памяти (in-memory).

Типичные представители в Java-экосистеме: H2, HSQLDB (HyperSQL), Apache Derby, SQLite.

Пример подключения и использования H2 в режиме in-memory:

import java.sql.*;

public class EmbeddedDbExample {
    public static void main(String[] args) throws SQLException {
        // JDBC URL для in-memory базы H2. База создается при подключении и уничтожается при закрытии.
        String url = "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1";

        try (Connection conn = DriverManager.getConnection(url, "sa", "");
             Statement stmt = conn.createStatement()) {

            // Создание таблицы и работа с данными
            stmt.execute("CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50))");
            stmt.execute("INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob')");

            ResultSet rs = stmt.executeQuery("SELECT * FROM users");
            while (rs.next()) {
                System.out.println(rs.getInt("id") + ": " + rs.getString("name"));
            }
        } // Соединение закроется автоматически, in-memory база будет удалена.
    }
}

Преимущества:

  • Простота развертывания: Не требует установки и администрирования отдельного сервера БД.
  • Высокая скорость: Отсутствуют сетевые задержки (особенно в in-memory режиме).
  • Идеально для тестирования: Позволяет создавать изолированное, повторяемое окружение для юнит- и интеграционных тестов.
  • Подходит для встраиваемых устройств и desktop-приложений.

Недостатки и ограничения:

  • Ограниченная масштабируемость и производительность в высоконагруженных многопользовательских сценариях.
  • Нет сетевого доступа по умолчанию (хотя некоторые, как H2, имеют и серверный режим).
  • Ограниченный набор функций по сравнению с промышленными СУБД (PostgreSQL, Oracle).

Основные сценарии использования:

  1. Разработка и тестирование: Быстрый запуск без зависимостей.
  2. Демо- и прототип-приложения.
  3. Встроенное ПО (IoT, устройства).