Apache Derby — это легковесная реляционная система управления базами данных, реализованная полностью на языке Java. Разработанная как встраиваемая СУБД, она предоставляет стандартный SQL-интерфейс и механизмы транзакционной обработки, позволяя приложениям работать с локальными базами данных без необходимости отдельного серверного процесса. Архитектура Derby ориентирована на простоту интеграции в Java-приложения, совместимость с JDBC и минимальные требования к окружению.
Проект развивался в рамках открытого программного обеспечения и используется в сценариях, где важны небольшие размеры, простота развертывания и переносимость между платформами, поддерживающими виртуальную машину Java. Derby поддерживает как режим встраивания в тот же процесс, что и клиентское приложение, так и клиент-серверную работу через сетевой сервер, реализованный поверх той же кодовой базы. В проекте реализованы стандартные механизмы управления транзакциями, блокировками и восстановления после сбоев.
- Реализация на Java: полностью написана на языке Java, что обеспечивает кроссплатформенность и простоту интеграции в Java-приложения.
- Поддержка SQL и JDBC: реализует стандарт SQL и предоставляет интерфейсы JDBC для выполнения запросов и управления соединениями.
- Встраиваемый режим: позволяет запускать базу данных в том же процессе, что и приложение, без отдельного сервера.
- Клиент-серверный режим: включает сетевой сервер для удалённого доступа к базе данных при необходимости.
- Транзакции и надежность: поддерживает атомарные транзакции, журналирование и механизмы восстановления для обеспечения согласованности данных.
- Небольшой размер: компактная кодовая база и малые требования к ресурсам, что делает её удобной для встраиваемых и десктопных приложений.
- Управление схемой и данными: включает возможности создания таблиц, индексов, представлений и выполнения типичных операций DML/DDL.
- Расширяемость: допускает использование пользовательских функций и интеграцию с приложениями на Java через встроенные механизмы.
- Поддержка безопасности: базовая модель аутентификации и контроля доступа, достаточная для многих локальных и небольших распределённых конфигураций.
- Применение: часто используется в образовательных проектах, для прототипирования, в настольных приложениях и встраиваемых системах, где важны простота и автономность хранения данных.